封装

封装的概念:

将类的某些信息隐藏在类内部,

不允许外部程序直接访问,

而是通过该类提供的方法来实现隐藏信息的操作和访问

封装的原则:

1.将属性私有化,访问修饰符设置为private,属性只能在本类中使用

2.在类中给属性提供相对于get/set的方法,给外部的程序访问属性

3.在属性的相对应的方法中,提供逻辑的判断

4.在封装中如果属性设置业务逻辑的判断,在相对应的构造方法中需要调用相对应的set方法

封装的好处: 

1.隐藏类的实现细节

2.只能通过规定方法访问数据

3.方便加入控制语句

4.方便修改实现

封装的步骤:

1.修改属性的可见性

2.创建get,set方法

3.在get,set方法中加入属性

4.实现get,set方法

代码参考:

第一种方法:

第一个类:

public class Student {
int sno;//学号
String name;//姓名
int age;//年龄
char sex;//性别

public Student (){}
public day0220yi(int sno,String name,int age,char sex){
this.sno=sno;
this.name=name;
this.age=age;
this.sex=sex;
}
//提供获取属性值的方法,命名规则:getSno(),属性名首字母大写
public int getSno(){
return sno;
}
//提供设置属性值的方法,命名规则:setSno(int sno),
// 属性名首字母大写,方法中传进来的参数值作为属性值
public void setSno(int sno){
this.sno=sno;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
public char getSex(){
return sex;
}
public void setSex(char sex){
this.sex=sex;
}
public void show(){
System.out.println("学号:"+sno+" 姓名:"+name+" 年龄:"+age+" 性别:"+sex);
}
}

第二个实现类:

public class TestStudent {
public static void main(String [] args){
Student stu=new Student ();
stu.setSno(20110);
stu.setName("张三");
stu.setAge(29);
stu.setSex('男');
stu.show();
}
}

第二种方法:

第一个类:

public class Student2{
String name;
int health;
int love;
String strain;

public Student2(){}

public Student2(String name,int health,int love,String strain){
this.name=name;
this.setHealth(health);
this.setLove(love);
this.strain=strain;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getHealth(){
return health;
}
public void setHealth(int health){
//对健康值做一个判断,只能0~100之间
if(health<0||health>100){
this.health=100;
System.out.println("输入健康值不合格,设置为默认100!");
}else{
this.health=health;
}
}
public int getLove(){
return love;
}
public void setLove(int love){
//判断亲密度的合法性
if(love>=0&&love<=100){
this.love=love;
}else{
System.out.println("输入的亲密度不合法,请重新输入");
}
}
public String getStrain(){
return strain;
}
public void setStrain(String strain){
this.strain=strain;
}

public void show(){
System.out.println("昵称:"+name+" 健康值:"+health+" 亲密度:"+love+" 品种:"+strain);
}
}

第二个实现类:

public class TestStudent2{
public static void main(String[] args) {
// Dog dog=new Dog();
// dog.setName("旺财");
// dog.setHealth(1000);
// dog.setLove(-100);
// dog.setType("中华田园犬");
Student2dog=new Student2("旺财",1000,100,"中华田园犬");
dog.show();
}
}