1.extends关键字表示继承
2.旧类叫做:父类、基类、超类
新类叫:子类、孩子类、派生类
3.用super关键字调用父类的方法
4.覆盖override:子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
注意:覆盖一个方法时,子类的方法的可见性不能低于超类方法的可见性。当超类方法为public,而子类方法没写修饰符,则会报错。
5.子类构造器
public Manager(int day,int month)
{
super(day,month);//超类构造器必须是第一句
year=2000;
}
6.this作用:隐式参数(对象本身)的引用,调用该类其他构造器
7.super作用:调用超类的方法,调用超类的构造器;
8.一个对象可以指示多种实际类型的现象称为多态。在运行时可以自动选择适当的方法,称为动态绑定。
9.继承可以有多个层次,从某类到其祖先的路径称为该类的继承链。
10.is-a规则的,子类的每个对象也是超类的对象。
替换原则:程序中出现超类对象的任何地方可以用子类对象代替。
11.Java中对象变量是多态的。
12.方法调用的过程:
编译器查看对象的声明类型和方法名。虚拟机为每个类生产了方法表,方便查找方法。
编译器查看方法调用中的提供的参数类型。查找到一个参数类型完全相同的方法叫重载解析。
如果是static、final、private、构造器,编译器明确知道调用什么方法,为静态绑定。如果不是,则要根据隐式参数(对象)进行动态绑定。
虚拟机根据隐式参数的实际类型(根据多态,对象可能是超类或子类)对应的方法。
13.final类不允许继承,final方法子类不能覆盖。
14.小数取天棚:Math.ceil(double a);
取地板Math.floor(double a)
四舍五入Math.round(double a)
15.抽象类:abstract关键字
可以声明抽象类:抽象类可以有具体方法,可以有用abstract声明的抽象方法。
抽象方法:不需要具体实现。
抽象类不能实例化。
子类可以定义所有抽象方法,那这个子类就不是抽象的了。
16.受保护访问:protected
子类的方法可以访问超类的某个字段。
而且受保护字段只能被一个包内的类访问。
17.
public对外完全可见
private对本类可见
protected对包内和子类可见
默认 对包内可见