封装的概念:
将类的某些信息隐藏在类内部,
不允许外部程序直接访问,
而是通过该类提供的方法来实现隐藏信息的操作和访问
封装的原则:
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();
}
}