抽象类的介绍以及匿名类对象

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的父类去实例化时:

//创建了一个匿名子类的对象p
Person p = new Person(){
	//这里面的方法是重写父类中抽象的方法
};

你可能感兴趣的:(javase,java,面试)