java画板抽象类_java 中的 抽象方法 抽象类 和 接口有啥瓜葛
文章目錄
什么是java中的抽象方法
抽象方法是一種特殊的方法:
它只有聲明,而沒有具體的實現
例如:
abstract void eat();
上面定義了一個方法 eat() ,有修飾關鍵詞 abstract ,而且只有方法簽名,沒有方法的具體實現,
這就是一個java中的 抽象方法.
我們可以看到關鍵詞 abstract 前面再沒有任何修飾關鍵詞 [ public , protected 或者 private ]
為什么不能有修飾關鍵詞,我們留到下面再講.
什么是java中的抽象類
一個類含有抽象方法,則稱這個類為抽象類
抽象類必須由關鍵詞 abstract 修飾;
我們來看一個抽象類的示例:
abstract class Person{
abstract void eat();
}
包含抽象方法 eat() ,并且類前面有關鍵詞 abstract 修飾,所以上面的類就是一個抽象類.
這里可能有疑問,抽象類必須要包含抽象方法嗎?如果沒有抽象方法呢?
abstract class Person{
}
這也是一個抽象方法,但是這種空的抽象類有什么意義呢?
因為抽象方法只是一個方法簽名,沒有具體方法實現,所以這種抽象類必須由子類繼承才有存在的意義,不能直接創建類的實例;
因為繼承,其中的抽象方法會被子類重寫;
所以沒有實現繼承的抽象類是沒有意義的,沒有定義任何抽象方法的抽象類更沒有意義.
因為抽象類必須要實現繼承,所以類前面缺省的訪問修飾符默認 public 不能是 private ,可以不寫直接省略(缺省 public)
什么是java 中的接口
接口是一種特殊的抽象類;
接口中沒有變量,只有public static final修飾的靜態常量,三個修飾符可以省略;
接口中所有的方法都是抽象方法,且默認就是public權限;
java中使用 interface 來聲明接口:
interface Person{
void eat();
String getName();
}
接口中的方法全部只有定義而沒有被實現;
所有方法默認都是 public abstract 的.
一個類使用 implements 關鍵詞來實現接口
class Child implements Person{
private String name;
public Child(String name){
this.name = name;
}
@Override
public void eat(){
System.out.println(this.name + " 用勺子吃飯");
}
@Override
public String getName(){
return this.name;
}
}
類和接口的繼承
Java類的繼承是單一繼承,一個類只能繼承一個父類;
Java類卻可以實現多個接口;
為什么不能繼承多個父類?
假如多個父類同時存在簽名相同的方法,那多繼承后,子類到底該實現哪一個父類的同名方法呢?
為什么可以實現多個接口?
接口中全都是抽象方法,只有簽名沒有方法實現,所以就算有同名的抽象方法,子類重寫該方法,實現自己的方法內容即可,完全不受影響.
總結
以上是生活随笔為你收集整理的java画板抽象类_java 中的 抽象方法 抽象类 和 接口有啥瓜葛的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 过滤器java面试_过滤器监听器面试题都
- 下一篇: java scanner 用不了_jav