JAVA学习--面向对象的特征二:继承性
生活随笔
收集整理的這篇文章主要介紹了
JAVA学习--面向对象的特征二:继承性
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
* 一、面向對象的特征二:繼承性
?
?*
?* 2.通過"class A extends B"類實現類的繼承。
?*?? 子類:A? 父類(或基類 SuperClass):B
?*? ?
?* 3.子類繼承父類以后,父類中聲明的屬性、方法,子類就可以獲取到。
?*??? 明確:當父類中有私有的屬性或方法時,子類同樣可以獲取得到,只是由于封裝性的設計,使得子類不可以直接
?*??????? 調用罷了。
?*?? 子類除了通過繼承,獲取父類的結構之外,還可以定義自己的特有的成分。
?*? ?
?*?? extends:子類是對父類功能的“擴展”,明確子類不是父類的子集。
?*? ?
?* 4.java中類的繼承性只支持單繼承:一個類只能繼承一個父類。反之,一個父類可以有多個子類。
?* 5.子父類是相對的概念。
?*
?* 二、方法的重寫?? ---(方法的重載)???? 修飾符? 返回值類型 方法名 (參數列表){}
?* 1.前提:有子類繼承父類
?* 2.子類繼承父類以后,若父類的方法對子類不適用,那么子類可以對父類的方法重寫(override overwrite)、覆蓋、覆寫。
?* 3.重寫的規則:? 1)要求子類方法的“返回值類型 方法名 (參數列表)”與父類的方法一樣
?* ?? ??? ??? ?? 2)子類方法的修飾符不能小于父類方法的修飾符
?* ?? ??? ??? ?? 3)*若父類方法拋異常,那么子類方法拋的異常類型不能大于父類的。
?* ?? ??? ??? ?? 4)*子父類的方法必須同為static或同為非static的。
1 public class TestExtends { 2 public static void main(String[] args) { 3 Student s = new Student(); 4 s.eat(); 5 6 Worker w = new Worker(); 7 w.eat(); 8 9 Person p = new Person(); 10 p.eat(); 11 12 s.setAge(12); 13 s.setName("麻華龍"); 14 System.out.println(s.getName() + ":" + s.getAge()); 15 16 Graduate g = new Graduate(); 17 g.eat(); 18 g.info(); 19 g.show(); 20 } 21 } 22 23 class Person { 24 private String name; 25 private int age; 26 27 public String getName() { 28 return name; 29 } 30 31 public void setName(String name) { 32 this.name = name; 33 } 34 35 public int getAge() { 36 return age; 37 } 38 39 public void setAge(int age) { 40 this.age = age; 41 } 42 43 public void eat() { 44 System.out.println("吃飯"); 45 } 46 47 void walk() { 48 System.out.println("走路"); 49 } 50 private void sleep(){ 51 52 } 53 } 54 55 class A{ 56 57 } 58 59 class Student extends Person{ 60 // class Student extends Person,A{ 61 // private String name; 62 // private int age; 63 private String schoolName; 64 65 public Student(){ 66 67 } 68 public Student(String name,int age){ 69 // this.name = name; 70 // this.age = age; 71 this.setName(name); 72 this.setAge(age); 73 } 74 75 // public String getName() { 76 // return name; 77 // } 78 // public void setName(String name) { 79 // this.name = name; 80 // } 81 // public int getAge() { 82 // return age; 83 // } 84 // public void setAge(int age) { 85 // this.age = age; 86 // } 87 // 88 // 對父類同名的方法的重寫、覆蓋 89 public void eat(){ 90 System.out.println("應該多吃有營養的"); 91 } 92 public void walk(){ 93 System.out.println("背著書包蹦蹦跳跳的走路"); 94 } 95 public void info(){ 96 eat(); 97 //System.out.println("name:" + name); 98 System.out.println("我是一個學生"); 99 } 100 //不是對父類私有的sleep()方法的重寫。 101 private int sleep(){ 102 return 0; 103 } 104 105 } 106 107 108 109 class Worker extends Person{ 110 public void eat(){ 111 System.out.println("工人吃飯"); 112 } 113 114 public void walk(){ 115 116 } 117 } 118 119 class Graduate extends Student{ 120 public void show(){ 121 System.out.println("我是一個研究生"); 122 } 123 }
?
轉載于:https://www.cnblogs.com/zhangfan94/p/4263272.html
總結
以上是生活随笔為你收集整理的JAVA学习--面向对象的特征二:继承性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .Net 泛型约束
- 下一篇: Android如何解决65535问题