抽象类和接口的异同

   Java中的两种抽象定义:一为抽象类(Abstract Class),二为接口(Interface)。

一、抽象类Abstract Class

  抽象类是关键字abstract修饰的类,既为抽象类,抽象抽象即不能被实例化。而不能被实例化就无用处,所以抽象类只能作为基类(父类),即被继承的类。抽象类中可以包含抽象方法也可以不包含,但具有抽象方法的类一定是抽象类。

  抽象类的使用原则如下:

(1)被继承性抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public

(2)抽象性抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理;

(3)抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类;

(4)子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

  比如:  

1 package com.fzz.test; 2 3 //抽象类A 4 abstract class A{ 5 public void fun(){//普通方法 6 System.out.println("存在方法体的方法"); 7 } 8 9 public abstract void print();//抽象方法,没有方法体,有abstract关键字做修饰 10 11 } 12 //单继承特性 13 class B extends A{//B类是抽象类的子类,是一个普通类 14 @Override 15 public void print() {//强制要求重写 16 System.out.println("Why is more important than what!"); 17 } 18 19 } 20 //测试类 21 public class TestDemo { 22 public static void main(String[] args) { 23 A a = new B();//多态:向上转型 24 a.fun();//被子类所覆写的过的方法 25 } 26 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxxyg.html