理解类,抽象类,接口之间的异同

2019-02-20  本文已影响0人  刘昱涵

首先是大致的关系,一个类只能继承一个抽象类,一个类可以实现多个接口。

抽象类

而相对于类来说,抽象类与其的区别最大的就是无法实例化,所以抽象类只能作为父类,被继承。抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

具体的使用例子

//抽象类A
abstract class A{
    public void fun(){//方法
        System.out.println("这是初始的方法");
    }

    public abstract void print();//抽象方法,没有方法体,有abstract关键字做修饰

}
//单继承特性
class B extends A{//B类是抽象类的子类,是一个普通类
    @Override
    public void print() {//强制要求重写
        System.out.println("这是重写过后的方法");
    }

}
//测试
public class Test {
    public static void main(String[] args) {
        A a = new B();//多态:向上转型
        a.fun();//被子类所覆写的过的方法
    }
}

接口

接口与类的区别

接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。

类不允许多继承但接口可以

>// 文件名: WarShip.java
public interface WarShip
{
   public void gunType(String name);
}
 
// 文件名: Battleship.java
public interface Battleship extends WarShip
{
   public void cannonDiameter(int diameter);
}
 
// 文件名: Cruiser.java
public interface Cruiser extends WarShip
{
   public void speed(int speed);
}
上一篇下一篇

猜你喜欢

热点阅读