1. 程式人生 > >3.java多型小案例

3.java多型小案例

多型

   Pet.java

package com.gaoshou.class1.duotai;

/*
 * Pet是父類,定義好所有子類的公共屬性和方法,子類不用再一次進行宣告和建立,可以直接引用
*/
public class Pet {
	private String name;
	public Pet() {
	}
	public Pet(String name) {
		this.name = name;
	}
	public void speak() {
		System.out.println(name+"說:哈哈哈哈");
	}
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}
   Cat.java
package com.gaoshou.class1.duotai;


public class Cat extends Pet {


public Cat(String name) {
super(name);//引用父類有引數構造方法
}


@Override
public void speak() {
// TODO Auto-generated method stub
System.out.println(getName()+"說:我是一隻小貓,我喜歡吃小魚");
}


}
   Dog.java
package com.gaoshou.class1.duotai;


public class Dog extends Pet{




public Dog(String name) {
super(name);//引用父類有引數構造方法
}


@Override
public void speak() {
// TODO Auto-generated method stub
System.out.println(getName()+"說:我是一隻小狗,我喜歡吃骨頭");
}

}
Master.java
package com.gaoshou.class1.duotai;

public class Master {
	private String name;
	private Pet pet;

	public void feed() {
		System.out.println(name+"正在給"+pet.getName()+"餵食物");
	}
	
	public Master() {
	}

	public Master(String name,Pet pet) {
		this.name = name;
		this.pet = pet;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}
   Test.java
package com.gaoshou.class1.duotai;
/*
這個類採用了多型的方法,如果不建立一個父類Pet,也可以建立每一種動物的類,
但在給Master穿動物物件時,要更改Master的有參構造方法,每建立一個動物類就要修改,
因此非常的麻煩。使用多型的方法就可以給master傳任意引數,只要是pet的子類就行。
*/
public class Test {
	public static void main(String[] args) {
		Dog dog = new Dog("旺財");
		Cat cat = new Cat("阿花");
		Master master = new Master("周星星",cat);
		master.feed();
		cat.speak();
	}
}






相關推薦

3.java案例

多型    Pet.java package com.gaoshou.class1.duotai; /* * Pet是父類,定義好所有子類的公共屬性和方法,子類不用再一次進行宣告和建立,可以直接引

抽象類實現Java 特性案例

package javarefence.ninth.introducingclasses.introducingmethods.charter870; abstract class Figure {               double dim1;     double

Java ——一個案例 徹底搞懂它

最近,發現基礎真的hin重要。比如,Java中多型的特性,在學習中就是很難懂,比較抽象的概念。學的時候就犯糊塗,但日後會發現,基礎在日常工作的理解中佔有重要的角色。 下面,我將用一個程式碼例項,回憶和鞏固多型的概念和存在的意義。理解多型,是面向物件程式設計的重要一步。 先

JAVA基礎(55)---經典案例

class A { private int a = 10; public String show(D obj) { // System.out.println(a); return ("A and D"); } publi

Java Challengers#3性和繼承

    根據Venkat Subramaniam的傳說,多型性是面向物件程式設計中最重要的概念。多型性 -或者物件基於其型別執行專門操作的能力 - 是使Java程式碼具有靈活性的原因。命令,觀察者,裝飾者,策略等設計模式以及Gang Of Four建立的許多其他模式都使用

java隨筆

      多型的作用消除型別之間的耦合關係。而繼承允許將物件視為他自己本身型別或其基型別來加以處理。多型方法呼叫允許一種型別表現出與其他相似型別之間的區別(只要是它們從同一基類匯出來的)。這種區別是根據方法的行為不同而表示出來的,雖然這些方法都可以

C++和java的區別

C++和java多型的區別 C++中,如果父類中的函式前邊標有virtual,才顯現出多型。 如果父類func是virtual的,則 Super *p =new Sub(); p->func(); // 呼叫子類的func 如果不是virtual的,p->func將呼

Java 的“缺陷”

四種“缺陷” 私有方法 類的屬性 靜態方法 構造器和多型 私有方法 程式碼: public class PrivateOverride { private void f() { System.out.p

20180816-Java

Java 多型 多型是同一個行為具有多個不同表現形式或形態的能力。 多型性是物件多種表現形式的體現。 比如我們說"寵物"這個物件,它就有很多不同的表達或實現,比如有小貓、小狗、蜥蜴等等。那麼我到寵物店說"請給我一隻寵物",服務員給我小貓、小狗或者蜥蜴都可以,我們就說"寵物"這個物件就具備多型性。 接下

java——

一.  多型 面向物件程式設計有三大特性:封裝、繼承、多型。 封裝隱藏了類的內部實現機制,可以在不影響使用的情況下改變類的內部結構,同時也保護了資料。對外界而已它的內部細節是隱藏的,暴露給外界的只是它的訪問方法。 繼承是為了重用父類程式碼。兩個類若存在IS-A的關係就可以使用繼

Java (一)

多型時為了提高程式碼複用率和可讀性存在的, 簡單點說,就是同一個方法可以呼叫同一個父類的不同子類的功能,這樣就避免了到每一個子類中去寫這種相同的方法,具體實現見如下程式碼片段: Person.java package shunli.li.duotai; public class Per

java的特性

一、基本概念         多型:繼承的基礎上實現的(繼承、重寫、父類引用指向子類物件); 二、特點       1、 動態繫結(執行時繫結、後期繫結):執行時根據物件判斷呼叫對應的重寫的方法,也就是說編譯器在執行前

Java性詳細舉例說明(很經典例子)

(一)相關類 class A …{            public String show(D obj)…{

Python 3.6:的實現

多型的作用不用多說,C++用如下條件來實現多型: 要有繼承 要有虛擬函式函式重寫 要有父類指標(父類引用)指向子類物件 實際上C++使用VPTR指標來完成這個事情,其是設計模式的基礎,軟體分層的基石。最近看了一下Python,很欣慰python3.6(因為我學的時候已經

Java學習記錄

面向物件的三大特性:封裝、繼承、多型。從一定角度來看,封裝和繼承幾乎都是為多型而準備的。這是我們最後一個概念,也是最重要的知識點。 1.定義: 多型:指允許不同類的物件對同一訊息做出響應。即同一訊息可以根據傳送物件的不同而採用多種不同的行為方式。(傳送訊息就

java引用場景及程式碼實現

class Test { public static void main(String[] args) { /** 動物類可以是狗 就吧狗創建出來 也叫向上轉型*/ Animal animalOne = new Dog(); /** 狗可以通用動物的

java , 抽象類, 介面

1. 繼承 2. 重寫 3.父類引用指向子類物件 傳遞子類物件 當呼叫父類被重寫的方法時,實際new的是什麼子類物件就呼叫哪個子類物件的方法 執行期間,根據實際物件來呼叫,而不是父類引用。所以叫動態繫結,也叫多型 既然父類的方法註定要被重寫,那就沒有必要寫實現了,就可以將他定

Java

向上轉型 又稱隱式轉型、自動轉型 父類引用指向子類例項,可以呼叫子類重寫父類的方法以及父類派生的方法,無法呼叫子類獨有方法 小類轉型為大類 父類的靜態方法不允許子類重寫,只能呼叫父類原有的靜態方法 如果一定要呼叫子類中的靜態方法就需要向下轉型後再呼叫 向下轉型

python生成器模擬案例

#模擬多工 def neteasy_musice(duration): time = 0 while time <= duration: print('music to %d minute'%time) time +=

Java之編譯看左,執行看左/右

Java中多型的前提:         A:有繼承關係         B:有方法重寫(不是必須)         C:有父類引用指向子類物件 多型中成員的訪問特點:         A:成員變數:編譯看左邊,執行看左邊。         B:成員方法:編譯看左邊,執行看右