知识总结:
封装:
封装的特点:
封装的代码实现:
属性前+private:该属性只能在当前类内部被访问;
在类外对private属性访问需要:创建getter/setter操作接口取值和赋值:
Cat.java:
package com.imooc.animal;
/**
* 宠物猫类
* @author zhangziwei
*
*/
public class Cat {
//修改属性的可见性--private限定只能在当前类访问
private String name;
int month;
double weight;
String species;
public Cat(){
System.out.println("无参数构造方法!");
}
//创建get/set方法
//在get和set方法中添加对属性的限制
public void setName(String name){
this.name=name;
}
public String getName(){
return "我是一只名叫"+this.name+"的猫咪";
}
}
CatTest.java
package com.imooc.animal;
public class CatTest {
public static void main(String[] args){
//对象实例化
//Cat one=new Cat("花花",2,1000,"英国短毛猫");
Cat one=new Cat();
one.setName("花花");
System.out.println("昵称:"+one.getName());
}
}
eclipse自动生成get/set方法:右键,source->generate getters and setters
技巧:如何使错误后的一下信息不再输出:
public class CatTest {
public static void main(String[] args){
//对象实例化
//Cat one=new Cat("花花",2,1000,"英国短毛猫");
Cat one=new Cat();
one.setName("花花");
one.setMonth(3);
one.setWeight(1000);
one.setSpecies("英国短毛猫");
System.out.println("昵称:"+one.getName());
if(one.getMonth()==0)//如果没赋值,或者赋值因为小于0错误,初始值还是0
return;//结束,不在执行下面的语句
System.out.println("年龄:"+one.getMonth());
System.out.println("体重:"+one.getWeight());
System.out.println("昵称:"+one.getSpecies());
}
}
注意:用带参数的构造方法给属性赋值的时候,可以越过setMonth()等方法,造成赋值可以小于0依然出现,因此推荐在带参数的构造方法里面耶使用调用setMonth()方法来做!不要用传统的参数复制方法来做! 可以避免bug!
总结: