1.属性 可以是变量,可以是常量
2.构造方法 有构造方法,但是不能实例化抽象类,所以,构造方法的作用是什么?
答:子类可以通过多态来访问父类中的属性和非静态方法,构造方法用于在这时候给抽象类中的属性赋值
调用
package com.class_decoration;
public class test {
public static void main(String[] args) {
// Animal animal=new Animal();会报错,不能直接实例化抽象类
// 但是可以通过实例化的方式,实例化该抽象类的子类,进而去使用抽象类中的非抽象方法
Animal dog=new Dog();
System.out.println(dog.a);
}
}
抽象类
package com.class_decoration;
public abstract class Animal {
int a=100;
public Animal(){
a=500;
}
public abstract void eat();
public void run(){
System.out.println("animal_run");
}
}
子类
package com.class_decoration;
public class Dog extends Animal{
@Override
public void eat() {
System.out.println("dog吃骨头");
}
}
3.方法
可以有抽象方法:限定子类必须完成某些动作
也可以有某些非抽象方法:提高代码复用性