1.抽象类(abstract)
(1)如果一个方法没有方法体,那必须用关键字abstract;
(2)如果一个类中有abstract修饰的方法,那这个类必须用abstract修饰;
(3)用abstract修饰的方法叫做抽象方法,修饰的类叫做抽象类;
(4)当一个类去继承抽象类时,必须重写抽象类中的抽象方法;
(5)如果一个类是抽象类,这个类中允许没有抽象方法;
(6)如果一个方法是抽象方法,那么它所在的类一定是抽象类;
(7)抽象类是不可以实例化对象的。(因为其方法没有方法体,不能被调用)
2.抽象类中可以存在构造方法、静态方法、final方法和私有的方法:
(1)静态的是存在静态方法区的,是唯一的,不可以被子类重写,不能用abstract修饰静态方法;
(2)用final修饰的方法不能被重写,abstract修饰的方法必须要重写,不能同时使用;
(3)私有的只能自己本类去使用,不能被子类所继承所以子类不能重写;
(4)子类不能继承父类的构造方法,所以不能重写。
3.如果子类不能去重写父类的抽象方法,可以将自己设置为抽象类,由自己的非抽象子类去重写这些抽象方法。
4.接口
(1)接口是一种规范;
(2)接口中默认都是全局常量和抽象方法,所以如果不写修饰符也就没有问题;
(3)一个类想要使用一个接口中的东西的话,不是继承,是实现;
(4)继承只能单继承,但是实现可以实现多个接口;
(5)接口不能实例化对象,不能有静态方法、最终方法、构造方法、私有方法;
(6)一个类既可以继承父类,又可以实现接口,要求继承在前,实现在后;
(7)实现接口,相当于拓展功能。
5.多继承
(1)接口可以多继承,是因为接口中的方法名相同,参数列表相同,不存在方法的实现不同;
(2)类不可以多继承,会因为相同方法名和相同参数列表而报错。
6.多态
(1)一个事物可以有多种形态;
(2)父类的引用直接指向了子类的实例父类对象直接调用时,调用子类的属性和方法;
(3)如果调用父类的方法,可以new父类的实体,通过父类的引用直接去直接调用父类的方法;用子类的对象去super调用父类的方法。
7.向上转型:父类的引用指向子类的实例;
向下转型:发生在继承关系中,父类的引用指向子类的实例;
8.编译时期多态:向上转型、重载;
运行时期多态:向下转型。
9.instanceof,用于判断对象是否属于某类;
匿名对象:只有堆内存地址,没有栈内存地址。