* 一、面向?qū)ο蟮奶卣鞫豪^承性
* 1.為什么要設(shè)計(jì)繼承性?** 2.通過"class A extends B"類實(shí)現(xiàn)類的繼承。*子類:A 父類(或基類 SuperClass):B* * 3.子類繼承父類以后,父類中聲明的屬性、方法,子類就可以獲取到。*明確:當(dāng)父類中有私有的屬性或方法時(shí),子類同樣可以獲取得到,只是由于封裝性的設(shè)計(jì),使得子類不可以直接*調(diào)用罷了。*子類除了通過繼承,獲取父類的結(jié)構(gòu)之外,還可以定義自己的特有的成分。* *extends:子類是對父類功能的“擴(kuò)展”,明確子類不是父類的子集。* *4.java中類的繼承性只支持單繼承:一個(gè)類只能繼承一個(gè)父類。反之,一個(gè)父類可以有多個(gè)子類。* 5.子父類是相對的概念。** 二、方法的重寫---(方法的重載)修飾符 返回值類型 方法名 (參數(shù)列表){}* 1.前提:有子類繼承父類* 2.子類繼承父類以后,若父類的方法對子類不適用,那么子類可以對父類的方法重寫(overrideoverwrite)、覆蓋、覆寫。* 3.重寫的規(guī)則: 1)要求子類方法的“返回值類型 方法名(參數(shù)列表)”與父類的方法一樣* 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("應(yīng)該多吃有營養(yǎng)的"); 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("我是一個(gè)學(xué)生"); 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("我是一個(gè)研究生");122 }123 }新聞熱點(diǎn)
疑難解答
圖片精選