abstract关键字:抽象的
1.abstract可以用来修饰的结构:类、方法
2.abstract修饰类:抽象类
此类不能实例化(创建对象new对象)
抽象类中一定有构造器,便于子类对象实例化(创建对象new对象)调用
开发中,都会提供抽象类的子类,让子类实例化,完成相关的操作
3.abstract修饰方法:抽象方法
抽象方法只有方法的声明,没有方法体
有抽象方法的类一定是抽象类,反之抽象类中可以没有抽象方法
例如:public abstract class AbatractDemo{public abstract void Method();//没有方法体}
4.如果子类继承了一个抽象类(有抽象方法)
重写所有父类的抽象方法,使得子类可以实例化
或者将子类也abstract
5.abstract使用注意点:
abstract不能修饰属性、构造器等结构
abstract不能修饰私有方法、静态方法、final的方法、final的类
面试题:
①.为什么抽象类不可以使用final关键字声明?
答:抽象类就是为了给子类继承使用的,如果使用final修饰就变成了不可继承的类
②.一个抽象类中可以定义构造器吗?
答:可以,一切类都有构造器,子类可以调用父类的构造器
③抽象类就是比普通类多定义了抽象方法,除了不能直接进行类的实例化操作之外,并无其他不同?
答:加入了abstract只是为了明确告诉继承的子类一定要重写某些抽象方法。其实抽象类也可以没有抽象方法。
匿名类(一次性用品)
场景:父类是abstract(抽象)类,子类继承了abstract的父类去实例化时:
//创建了一个匿名子类的对象pPerson p = new Person(){//这里面的方法是重写父类中抽象的方法};