201711671119《Java程式設計》第六週學習總結
教學內容總結
第五章 子類與父類
繼承是一種由已有的類建立新類的機制
java不支援多重繼承 即子類只能有一個父類
使用extends來定義類的一個子類
class Student extends People{
......
}
Java的類的樹形結構
在Java的類按繼承關係形成的樹形結構中,根結點是Object類(是java.lang包中的類)
若一個類(除了Object類)的宣告中沒使用extends,這個類被系統預設為是Object的子類,即宣告“class A”與“class A extends Object”等同
子類的繼承性
1.子類和父類在同一包中的繼承性
(公有 保護 友好)
2.子類和父類不在同一包中的繼承性
(公有 保護)
protected的進一步說明
1.子類D自己宣告的protected成員變數和方法 只要Other類和D類在同一個包中 object物件可訪問protected成員物件和方法
2.子類D從父類繼承protected成員變數和方法 只要Other類和A類在同一個包中,object物件即可訪問繼承的protected變數和方法
子類物件的生成:
先呼叫父類的構造方法完成父類部分的建立再呼叫子類的構造方法完成子類的建立,若子類沒說明呼叫哪個父類構造方法則呼叫父類不帶引數的構造方法
instanceof運算子
雙目運算子 左物件 右類
當左面的操作元是右面類或其子類所建立的物件時,instanceof運算結果為true 否則false
成員變數的隱藏
1.若子類所宣告的成員變數的名字和從父類繼承來的成員變數的名字相同時(宣告型別可不同),子類會隱藏所繼承的成員變數
2.子類繼承的方法只能操作子類繼承和隱藏的成員變數
3.子類新定義的方法可以操作子類繼承和子類新宣告的成員變數 若要操作子類隱藏的成員變數則需使用super關鍵字
方法重寫(覆蓋)
重寫的語法規則:
重寫的目的:子類通過方法的重寫可以隱藏繼承的方法
重寫注意:
- 不允許講的方法的訪問許可權,但可以提高訪問許可權
- 引數列表必須與被重寫的相同
- 返回值型別必須與被重寫的相同
- 不能重寫被標註final關鍵字的方法
- 可操作繼承的成員變數、呼叫繼承方法、操作子類新宣告的成員變數、呼叫新定義的其他方法
- 不可操作被隱藏的成員變數和方法 (要用super)
super關鍵字
用super操作被隱藏的成員變數和方法
用super呼叫父類的構造方法
class Student{
int number;
String name;
Student(){
}
Student(int number,String name){
this.number=number;
this.name=name;
System.out.println("我的名字是:"+name+"學號是:"+number);
}
}
class UniverStudent extends Student{
boolean 婚否;
UniverStudent(int number,String name,boolean b){
super(number,name);
婚否=b;
System.out.println("婚否="+婚否);
}
}
public class Example5_8 {
public static void main(String args[]) {
UniverStudent zhang =new UniverStudent(9901,"何曉林",false);
}
}
final關鍵字
可修飾類 成員變數 和方法中的區域性變數
變為常量
class A{
final double PI=3.1415926;
public double getArea(final double r) {
return PI*r*r;
}
public final void speak() {
System.out.println("hello, how's everything here?");
}
}
public class Example5_9{
public static void main(String args[]) {
A a=new A();
System.out.println("面積:"+a.getArea(100));
a.speak();
}
}
物件的上整型物件
- 物件的上整型物件能操作:隱藏的變數 繼承的變數 繼承或重寫的方法
- 物件能操作:繼承的變數 新增的變數 繼承或重寫的方法 新增的方法
繼承與多型
上轉型是多型的表現形式:通過父類子類方法的重寫
程式碼除錯中的問題和解決過程
有時候習慣把課本一些不同例題的程式放在同一個包裡執行,導致因為方法名相同而執行錯誤。所以,不同例題程式碼儘量放在不同的包或是不同的的工程裡進行執行。
學習進度條
程式碼行數(新增/累積) | 部落格量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 200/200 | 1/1 | 10/10 | |
第二週 | 300/500 | 1/2 | 15/25 | |
第三週 |
442/942 | 1/3 | 26/51 | (不要再當鹹魚了!!!) |
第四周 | 620/1120 | 1/4 | 10/61 | |
第五週 | 930/1430 | 1/5 | 12/73 | |
第六週 | 150/1580 | 1/6 | 3/76 | 要捋清思路再敲程式碼!! |