1、在继承类中,子类可以自由选择是否覆写父类方法,父类无法对子类做出强制性要求(强制覆写)
2、抽象类主要作用在于对子类中覆写方法进行约定,在抽象类中定义抽象方法(使用abstract关键字电仪并且没有提供方法体的方法)来实现。而且抽象方法所在的类必须为抽象类。
abstract class Person { //抽象类
public abstract String toString() ; //抽象方法
}
抽象类必须被继承(子类不能仍为抽象类);抽象类中的抽象方法必须全部被覆写;抽象类的对象实例化可以利用对象多态性通过子类向上转型完成(不能直接实例化抽象类对象)
3、抽象类是一个重要的面向对象设计的结构
抽象类绝对不能用final关键字进行定义;
抽象类中的构造方法可以按照原则在子类中调用,super();
抽象类中可以没有抽象方法;
抽象类中可以提供有static方法,并且该方法不受到抽象类对象的局限。
【重要】
package com.demo;
abstract class Message { // 抽象类
public abstract String getInfo() ; //抽象方法
public static Message getInstance() {
return new DatabaseMessage() ;
}
}
class DatabaseMessage extends Message {
public String getInfo() { // 覆写抽象父类中的抽象方法
return "aaa";
}
}
public class ChouXiang {
public static void main(String[] args) {
Message msg = Message.getInstance() ; // 调用抽象父类中的静态方法,实现了向上转型
System.out.print(msg.getInfo());
}
}
4、对对象行为的抽象处理,是为了对对象的行为进行规范地统一处理,例如,所有生物的吃的行为(eat),睡的行为(sleep),工作的行为(work)