抽象类的成员特点:
- 成员变量:既可以是变量也可以是常量
- 构造方法:有
用于子类访问父类的初始化 - 成员方法:既可以是抽象的,也可以是非抽象的
抽象类的成员方法特性:
- A:抽象方法,强制要求子类去做的事情
- B:非抽象方法 子类继承的事情,提高代码复用性
代码示例:
abstract class Animal {
public int num = 10;
public final int num2 = 20;
public Animal() {
}
public Animal(String name,int age) {
}
public abstract void show();
public void method() {
System.out.println("method");
}
}
class Dog extends Animal {
public void show() {
System.out.println("show Dog");
}
}
class AbstractDemo2 {
public static void main(String[] args) {
//创建对象
Animal a = new Dog();
a.num = 100;
System.out.println(a.num);
System.out.println(a.num2);
System.out.println("---------");
a.show();
a.method();
}
}
细节1:一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
- 可以
- 没有抽象方法,可以不让外界创建对象
细节2:abstract不能和哪些关键字共存?
- private 冲突
- final 冲突
- static 无意义
代码示例:
abstract class Fu {
//public abstract void show();
//非法的修饰符组合: abstract和private
//private abstract void show();
//非法的修饰符组合: abstract和final
//final abstract void show();
//非法的修饰符组合: abstract和static
//static abstract void show();
public static void method() {
System.out.println("method");
}
}
class Zi extends Fu {
public void show() {
}
}
class AbstractDemo3 {
public static void main(String[] args) {
Fu.method();
}
}