1.抽象类只能继承1个抽象类
2.抽象类内部可以有字段,内部可以定义抽象方法,也可以定义非抽象方法
3.继承抽象类必须实现抽象类的方法
4.抽象类不能被实例化
abstract class Person { //抽象类
public abstract void run();
}
class Child extends Person {
public void run() {
System.out.println("xxxxxxxxxxxxxxx");
}
}
Person p = new Person(); // 编译错误 抽象类不能被实例化
Person p=new Child(); //正确
p.run();//发生多态
向抽象编程的本质就是:
上层代码只定义规范(例如:abstract class Person);
不需要子类就可以实现业务逻辑(正常编译);
具体的业务逻辑由不同的子类实现,调用者并不关心。
例子:
抽象类 Abstract
A B 类继承Abstract
在fun中进行调用
public abstract class Abstract {
abstract void fun();
abstract void fun1();
}
class A extends Abstract{
public void fun(){
System.out.println("A fun");
}
public void fun1(){
System.out.println("B fun1");
}
}
class B extends Abstract{
public void fun(){
System.out.println("B fun");
}
public void fun1(){
System.out.println("B fun1");
}
}
//main中进行调用
public static void main(String[] arg0){
A a=new A();
B b=new B();
fun(a);
fun(b);
}
public static void fun(Abstract s){//调用发生多态
s.fun();
s.fun1();
}