java之抽象對象和類與接口的區別

抽象類與抽象方法

抽象方法:由系統關鍵字abstract修飾的方法,叫抽象方法
抽象方法的特點:
1.抽象方法的實現沒有
2.會強制抽象方法所在的類的子類去重寫該方法
3.一定只能在抽象方法中
抽象類:由系統關鍵字abstract修飾的類叫做抽象類
抽象類的特點:
1.抽象類不能實例化對象
2.抽象類的子類一定要重寫抽象類中的抽象方法
3.抽象類中可以有成員變量和成員方法,既可以有抽象方法,也可以沒有,抽象方法中一定有構造方法的
抽象類是根據多態來用其子類創建對象的

abstract class People         //抽象類
{
    String name;                 //成員變量
  public void sayHi()          //成員方法
  {
    System.out.println("我叫"+name);
  }
    public abstract void eat(); //抽象方法,沒有方法的實現
}
class Student extends People
{
            @Override         //抽象方法的重寫
    public void eat() {
        System.out.println("吃食堂飯");
    }
}

一般,當我們會把一些無法實現的方法,寫成抽象方法放入抽象類中,讓其子類來實現.
例如人吃什麼飯,這個問題我們不好寫實現,就定義爲抽象問題,但是其子類學生吃什麼飯這個問題就可以實現.
下面關於抽象類和抽象方法,我們思考一下,抽象關鍵詞abstract和哪一些關鍵字不能一起出現,原因是什麼?
1.首先是關鍵字final:因爲抽象方法是沒有實現的,會強制子類重寫方法,但是final修飾的方法是無法重寫的
2.關鍵字private,這是一個權限修飾符,因爲private修飾的方法外界是無法訪問的,因此子類是無法對其進行重寫的.
3.關鍵字static,因爲static修飾的方法,是可以直接用方法名調用的,但是抽象方法沒有方法的實現,是不能調用的.

接口

接口是由關鍵字interface修飾的叫做接口
接口的特點:
1.接口不能實例化一個對象,誰用接口就要去實現接口中的方法
2.接口中只能有抽象方法,不能有成員方法,並且接口中不能有成員變量,但是可以有常量,接口中是沒有構造方法的

interface Fly//接口
{
    public abstract void fly();//需求,抽象方法
}
class Bird implements Fly
{
    @Override
    public void fly() 
    {
        System.out.println("我能飛");
    }
}

類,接口之間的相互關係

類與類之間的關係是繼承關係,並且只能單繼承或者多層繼承
類與接口之間的關係是實現關係,類實現接口,並且可以一個類實現多個接口,但是類中必須要重寫所有的抽象方法
接口與接口的關係
例如:

interface X1
{
    public abstract void sayHi();
}
interface X2
{
    public abstract void print();
}
interface X3 extends X2 //接口3繼承接口2,連抽象方法也一起繼承了,所以實現的時候,X2X3的抽象方法都實現                   
{
    public abstract void count();
}
class P implements X1 , X3  
{
    @Override
    public void sayHi() {

        System.out.println("你好");
    }
    @Override
    public void print() {

        System.out.println("打印");
    }
    @Override
    public void count() {

        System.out.println("數數");
    }
}
發佈了35 篇原創文章 · 獲贊 10 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章