胸中似有万壑松 劲风过岗却无声
封装
封装的好处:
1、封装之后,对于那个事物来说看不到这个事物比较复杂的那一面,只能看到该事物简单的那一面,复杂性封装,对外提供简单的操作入口。照相机就是一个很好的封装案例,照相机的实现原理非常复杂,但是对于是用照相机的人来说,操作起来是非常便捷的。
2、封装之后才会形成真正的“对象”,真正的独立体。
3、封装就意味着以后的程序可以重复使用。并且这个事物应该适应性比较强,在任何场合都可以使用。
4、封装之后,对于事物本身,提高了安全性【安全级别高】
例子
public class Penguin {
// 定义属性
private String name;
private int health;
private int love;
public Penguin() {
}
public Penguin(String name, int health, int love) {
this.name = name;
this.health = health;
this.love = love;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setHealth(int health){
//调用此方法来给对象的health赋值,在赋值前对传过来的health进行判断
if(health<0||health>100){
System.out.println("您输入的健康值有误,默认给健康值赋值为60");
this.health = 60;
return;//这里的return作用是结束方法后续代码的执行
}
this.health =health;
}
public int getHealth(){
return health;
}
public void setLove(int love){
//对传递过来的love值进行判断
if(love<0||love>100){
System.out.println("您输入的亲密度值有误,默认给亲密度赋值为80");
this.love=80;
return;
}
this.love=love;
}
public int getLove(){
return love;
}
// 定义一个方法输出对象信息
public void printInfo() {
System.out.println("宠物信息:昵称:" + this.name + ",健康值:" + this.health
+ ",亲密度:" + this.love);
}
public static void main(String[] args) {
// 使用无参构造方法创建Penguin类的对象
Penguin penguin1 = new Penguin();
// 给对象penguin1的属性赋值,因为name属性使用private修饰了,所以不能同对象名.属性名直接给name属性赋值,只能是用其它方式给name属性赋值
// penguin1.name = "QQ";
// System.out.println(penguin1.name);
penguin1.setName("QQ");
String name =penguin1.getName();
System.out.println(name);
penguin1.setHealth(-90);
System.out.println(penguin1.getHealth());
penguin1.setLove(-99);
System.out.println(penguin1.getLove());
}
}
封装的步骤:
1、所有属性私有化,使用private关键字进行修饰,private表示西游的,修饰的所有数据只能在本类中访问。
2、对外提供简单的操作入口,也就是说以后外部程序想要访问age属性,必须通过这些简单的入口进行访问。
- 对外提供两个公开的方法,分别是set方法和get方法
- 想修改age属性,调用get方法
- 想读取age属性,调用get方法
3、set方法的命名规范:
public void setAge(int a){
age = a;
}
4、get方法的命名规范:
public int getAge(int a){
return age;
}
注:stter and getter方法没有static关键字
有static关键字修饰的方法怎么调用:类名.方法名(实参);
没有static关键字修饰的方法怎么调用:引用.方法名(实参);
关于java类中的构造方法:
1、 构造方法又称为构造函数/构造器/constructor
2、构造方法语法结构
(修饰符列表) 构造方法名(形式参数列表){
构造方法体;
)
3、回顾普通方法的语法结构:
(修饰符列表) 返回值类型 方法名(形式参数列表){
方法体;
)
4、对于构造方法来说:“返回值类型”不需要指定,并且也不能写void
只要写上void,那么整个方法就成为普通方法了。
5、对于构造方法来说,构造方法的方法名必须和类名保持一致。
6、构造方法的作用?
构造方法存在的意义是,通过构造方法的调用,可以创建对象。
7、构造方法应该怎么调用?
普通方法调用:方法修饰符中有static的时候,类名.方法名(实参列表)、方法修饰符列表中没有static的时候,引用.方法名(实参列表)
new 构造方法名(实参列表)
8、每一个构造方法实际上执行结束之后都有返回值,但是这个“return 值;”这样的语句不需要写。构造方法结束的时候java程序自动返回值。并且返回值类型是构造方法所在类的类型。由于构造方法的返回值类型就是类本身,所以返回值类型不需要编写。