定义抽象类 格式 : abstract class 类名{}
举例 :
抽象类中的 方法
抽象方法 abstract void eat();
没有方法体,没有{},以; 结尾.
非抽象方法
void sleep(){
syso ....
}
抽象类子类:
1.非抽象类,但是必须重写父类的抽象方法
2.抽象类,无须管抽象方法,但是子类不能new了
抽象类中,有构造方法,但是有不能new,那么构造方法干嘛的呢?
给子类用的!!!
抽象类,一样可以使用多态来创建子类对象 .
总结: 一般来说,会把父类定义为抽象的类.测试的时候,可以通过多态,来实现子类功能.
A:面试题
一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
abstract class A{
show(){
}
method(){
}
}
class B {
//1.无法new
private B(){}
//2.如何获取对象?
public static B getInstance(){
return new B();
}
}
class Test{
main(){
B b = B.getInstance();
}
}
B:面试题 abstract 不能和哪些关键字共存?
private 冲突 -- 对子类隐藏,而 abstract 必须让子类重写
final 冲突 -- 不能被重写,矛盾
static 无意义-- 类名调用,没有方法体,无意义
public static
public static final
方法前面 public
属性前面 private
*/