java——繼承遇到構造方法
背景
程式碼中建立的類, 主要是為了抽象現實中的一些事物.有的時候客觀事物之間就存在一些關聯關係, 那麼在表示成類和物件的時候也會存在一定的關聯.
例如, 設計一個類表示動物
class Animal{
public String name;
public void eat(){
System.out.println("Animal::eat()");
}
public void sleep(){
System.out.println("Animal::sleep()");
}
}
class Cat{
public String name;
public void eat(){
System.out.println("Cat::eat()");
}
}
class Bird{
public String name;
public void eat(){
System.out.println("Bird::eat()");
}
public void fly(){
System.out.println("Bird::fly()");
}
}
以上程式碼可以看出,程式碼思路雖然沒有問題,但是有很多冗餘的地方,為了簡化程式碼,我們引出繼承
語法規則
class 子類 extends 父類 {
}
使用繼承之後,程式碼變成
class Animal{
public String name;
public void eat(){
System.out.println(this.name + "Animal::eat()");
}
public void sleep(){
System.out.println("Animal::sleep()");
}
}
class Cat extends Animal{
//把以下程式碼遮蔽,依然可以執行
// public String name;
// @Override
// public void eat(){
// System.out.println(this.name+"Cat::eat()");
// }
}
public class TestDemo {
public static void main(String[] args) {
Cat cat = new Cat();
cat.name = "mimi";
cat.eat();
}
}
以上程式碼的輸出結果為:
mimiAnimal::eat()
繼承遇到構造方法
由於在給子類構造的時候,要先幫助父類進行構造,利用以下關鍵字:
super()
//必須放到第一行
> super代表父類物件的引用
super():呼叫父類的構造方法
super.data():訪問父類的屬性
super.func():訪問父類的成員方法
程式碼修改為:
class Animal{
public String name;
//新增構造方法
public Animal(String name) {
this.name = name;
}
public void eat(){
System.out.println(this.name + "Animal::eat()");
}
}
class Cat extends Animal{
public Cat(String name){
super(name);//顯式呼叫//寫道第一行
}
// public String name;
// @Override
// public void eat(){
// System.out.println(this.name+"Cat::eat()");
// }
}
class Bird extends Animal{
public Bird(String name){
super(name);
}
// public String name;
//
// public void eat(){
// System.out.println("Bird::eat()");
// }
//
public void fly(){
System.out.println("Bird::fly()");
}
}
public class TestDemo {
public static void main(String[] args) {
Cat cat = new Cat("haha");
cat.eat();
Bird bird = new Bird("bage");
bird.eat();//訪問Animal的
bird.fly();//訪問自己的
}
}
相關文章
- java之繼承中的構造方法Java繼承構造方法
- java基礎:繼承中的構造方法規則Java繼承構造方法
- 繼承中構造方法的特點繼承構造方法
- Java零散知識點整理(二)(構造方法、繼承)Java構造方法繼承
- java關於繼承父類,需要實現父類中的構造方法Java繼承構造方法
- java抽象繼承-模板方法Java抽象繼承
- C++中的虛繼承的構造C++繼承
- 學習Java中遇到的繼承問題Java繼承
- 【C++】 46_繼承中的構造與析構C++繼承
- java容器類的繼承結構Java繼承
- Java建構函式的繼承Java函式繼承
- Java繼承Java繼承
- Javascript繼承2:建立即繼承—-建構函式繼承JavaScript繼承函式
- 區分:派生類指定基類建構函式、繼承構造、委託構造函式繼承
- 三種繼承的方法:public 繼承/private繼承/protected繼承詳解及區別繼承
- java繼承extendsJava繼承
- Java的繼承Java繼承
- Java單繼承Java繼承
- java中繼承Java中繼繼承
- JAVA 之 繼承Java繼承
- Java--構造器和構造方法Java構造方法
- Java建構函式的繼承問題Java函式繼承
- day23:單繼承&多繼承&菱形繼承&__init__魔術方法繼承
- 黑馬程式設計師——物件導向(上)— 類、物件、封裝、繼承、構造方法程式設計師物件封裝繼承構造方法
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- iOS 繼承&類方法iOS繼承
- java -繼承 -重寫Java繼承
- Java繼承練習Java繼承
- Java繼承和介面Java繼承
- Java集合繼承圖Java繼承
- Java:類與繼承Java繼承
- Java 繼承詳解Java繼承
- Java繼承的使用Java繼承
- java中的繼承Java繼承
- JAVA物件導向高階:繼承:許可權修飾符(繼承注意事項) 單繼承 Object類 方法重寫Java物件繼承Object
- 二、Java初級--8、繼承和重寫方法Java繼承
- Java 8 預設方法和多繼承深入解析Java繼承
- java繼承與多型Java繼承多型