入口
-
java面向物件三大特性:
封裝:
將類的某些資訊隱藏在類內部,不允許外部程式直接訪問,而是通過該類提供的方法來實作對隱藏資訊的操作和訪問,
繼承:
繼承是類與類的一種關系,是一種“is a”的關系,比如“狗”繼承“動物”,這里動物類是狗類的父類或者基類,狗類是動物類的子類或者派生類,
多型:
同一個參考型別,使用不同的實體,執行不同的操作,方法重寫是實作多型的基礎,
-
java面向物件三大特性之多型:
即同一方法可以根據發送物件的不同而采用多種不同的行為方式
一個物件的實際型別是確定的,但可以指向物件的參考的型別有很多
多型存在的條件:
1、有繼承關系
2、子類重寫父類方法
3、父類參考指向子類物件
-
注意:
1、多型是方法的多型,屬性沒有多型性,
2、父類和子類,有聯系 型別轉換例外 ClassCastException
3、存在的條件:繼承關系,方法需要重寫,父類參考指向子類物件 Father f = new Son();
有些方法無法被重寫,如以下幾種:
1、static 修飾的方法,屬于類,它不屬于實體,無法被重寫
2、final 修飾的是一個常量,無法被重寫
3、private方法私有,無法被重寫
instanceof 型別轉換~ 這個轉換指的是參考型別之間的轉換
-
實體:
1 package oop.demo9; 2 3 /** 4 * Java面向物件三大特性之多型 5 * 即同一方法可以根據發送物件的不同而采用多種不同的行為方式 6 * 一個物件的實際型別是確定的,但可以指向物件的參考的型別有很多 7 * 多型存在的條件: 8 * 1、有繼承關系 9 * 2、子類重寫父類方法 10 * 3、父類參考指向子類物件 11 * 注意: 12 * 1、多型是方法的多型,屬性沒有多型性, 13 * 2、父類和子類,有聯系 型別轉換例外 ClassCastException 14 * 3、存在的條件:繼承關系,方法需要重寫,父類參考指向子類物件 Father f = new Son(); 15 * 有些方法無法被重寫,如以下幾種: 16 * 1.static 修飾的方法,屬于類,它不屬于實體,無法被重寫 17 * 2.final 修飾的是一個常量,無法被重寫 18 * 3.private方法私有,無法被重寫 19 * 20 * instanceof 型別轉換~ 這個轉換指的是參考型別之間的轉換 21 */ 22 public class Application { 23 24 public static void main(String[] args) { 25 26 /** 27 * 一個物件的實際型別是確定的 28 * 但是可以指向的參考型別是不確定的 29 */ 30 Student s1 = new Student(); 31 Person s2 = new Student(); //父類的參考指向子類物件 32 Object s3 = new Student(); //所有的類都繼承Object類 33 34 /** 35 * 子類不重寫父類的方法時,子類執行的是繼承父類的方法 36 * 子類重寫了父類的方法后,執行的是子類的方法 37 */ 38 s2.run(); //重寫之前呼叫Person的run,重寫之后呼叫Student的run 39 s1.run(); //始終呼叫的是Student的run 40 41 s1.eat(); //呼叫自身獨有的方法 42 //s2.eat(); //程式例外,Person類中沒有eat方法,s2無法呼叫子類獨有的方法 43 44 } 45 46 }
Person類
1 package oop.demo9; 2 3 public class Person { 4 5 public void run(){ 6 System.out.println("run"); 7 } 8 }
Student 類繼承 Person 類
1 package oop.demo9; 2 3 public class Student extends Person { 4 5 @Override 6 public void run() { 7 System.out.println("son"); 8 } 9 10 public void eat(){ 11 System.out.println("eat"); 12 } 13 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/180081.html
標籤:其他
