3、封装和继承
封装
隐藏细节
通过访问修饰符private,有些细节不需要用户直接访问,将他隐藏起来。只能间接访问,通过提供一些共有的接口(给外部提供一个可以调用的方法)
会写JavaBean
final关键字
修饰的东西不能被修改
修饰变量:变成常量
修饰方法:不能被重写
修饰类:不能被继承
常量命名规范:全大写,多个单词之间用__隔开
static关键字
静态修饰,修饰成员变量和方法
有static修饰: 静态成员:静态变量、静态方法
静态成员属于类
无论创建多少对象,静态成员变量在内存中只有一个,所有对象共用的只有一个数据
通过使用类直接调用
无static修饰: 非静态成员或者实列成员
非静态成员属于对象
非静态成员变量,每次new都会开辟一个的空间
使用是依靠对象来调用
继承
子类继承父类:可以简单的理解成父类的代码在子类中写了一遍
注意:子类还是会继承父类的私有的成员变量,只是不能调用了
构造方法
子类对象创建时,先调用父类的构造方法,如果子类中没有指定,默认调用父类的无参构造方法,可以指定子类构造器调用父类的哪个构造方法
子类不会继承父类的构造方法,但是可以调用
static静态代码块
一个类:
静态代码块(加载类执行,只执行一次)-----非静态代码块(new对象之前)----构造器
子类对象创建:
父类静态代码块---子类静态代码块---父类非静态代码块---父类构造器---子类非静态代码块---子类父类构造器
Super关键字
代表引用父类成员
super():
调用父类的构造方法,必须出现在构造器的第一条语句
super.属性:
子类没有定义和父类同名的属性,this.属性和super.属性没有区别
子类定义了和父类同名的属性,this.属性子类定义的属性,super.属性父类定义的属性(一般不会用这种)
super.方法():
子类可以重写父类的同名方法
访问修饰符的权限问题
方法重写
子类重写父类的方法,一般情况下,子类重写的方法(定义方法的结构)完全相同
方法重写的目的(本质):增加父类的功能
细节规则
方法名相同
参数列表相同
返回值类型相同或者是其子类
访问权限不能严于父类:重写以后使用范围>=父类的使用范围
异常有要求