3.java多型小案例
多型
Pet.java
Cat.javapackage 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; } }
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
Master.javapackage 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()+"說:我是一隻小狗,我喜歡吃骨頭"); } }
Test.javapackage 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; } }
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:成員方法:編譯看左邊,執行看右