通过面向对象分析
//封装的概念:
内部封装所有不变的代码,对外开放变化的代码
方法封装,封装复杂性,对外开放简单方法
比如:属性,可以让外界删除、修改,取值,那就开放
方法:把所有复杂逻辑封装在方法里。对外开放参数和返回值
重要的意义,只需要赋值而不用取值的属性做成私有的,通过构造函数赋值(面向对象的封装)
初始化所有属性(开发规范)
这个属性可以任意取值赋值
以下情况时:需要用set方法做属性值校验, 需要用get方法处理属性格式
继承:
父类私有的属性,不会被子类继承
protected 定义的 子类可以使用public 所有类都能用
//super.属性和this.属性的区别
当子类没有此属性时,super.属性与this.属性一样
当子类有此属性时,super.属性是父类的属性,this.属性是子类的属性
//super的使用:super只能出现在子类的方法和构造方法中
super调用构造方法时,只能是第一句
super不能访问子类的private成员
eg:
public class Car {
private int site = 4; //座位数
Car(){
System.out.println ("载客量是"+site+"人");
}
public void setSite(int site){
this.site = site;
}
void print(){
System.out.print("载客量是"+site+"人");
}
}
class Bus extends Car {
Bus(int site){
setSite(site);
}
}
//方法重写的规则:
方法名相同
参数列表相同
返回值类型相同或者是其子类
访问权限不能严于父类
//抽象类和抽象方法:
抽象类不能被实例化
抽象类可以有0~多个抽象方法
非抽象子类必须重写父类的所有抽象方法
//final修饰符
修饰的类,不能再被继承
修饰的方法,不能被子类重写
修饰的变量将变成常量,只能在初始化时进行赋值
实现多态的两种形式:
使用父类作为方法形参实现多态
使用父类作为方法返回值实现多态