1. 程式人生 > >#20175120彭宇辰 java第四周總結

#20175120彭宇辰 java第四周總結

super instance 結果 訪問權限 amp 都是 入口地址 過程 源代碼

教材學習內容總結

-第五章 子類與繼承

子類的定義
-class 子類名 extends 父類名
ps:
-任何類都是object的子類
-每個類有且僅有一個父類,多個或0個子類

同一包裏的繼承性
-除了private,其他友好類、public類、protected類都被子類繼承
不同包裏的繼承性
-子類只繼承public和protected類

protected的說明
-對於子類D自己聲明的protected,只要其他類和D在同一個包中,其他類中用D創建的對象就能訪問這些protected
-對於子類繼承的protected,只要其他類和D的祖先類在一個包中,其他類就能訪問protected

instanceof運算符
-左邊是對象,右邊是類
-左邊的對象是右邊的類或其子類創建時,instanceof運算結果是true

成員變量的隱藏
-子類對象和自己定義的方法與父類的同名,則父類的內容被隱藏
-子類對象依然可以用從父類繼承的方法調用被隱藏的成員變量

方法重寫
-繼承父類
-方法類型一致或為父類方法子類型
-方法名字、參數個數、參數類型與父類一致
-重寫方法時,不能降低方法的訪問權限

super關鍵字
-調用被隱藏的方法c=super.f()
-必須是子類構造方法中的第一條
-子類中默認有super();

final關鍵字
-修飾類、成員變量、方法中的局部變量
-修飾成員變量,不能有子類
-修飾局部變量,不允許子類重寫

abstract關鍵字
-修飾類、方法
-不能與final同時修飾方法和類
-不能與static同時修飾方法
-抽象類中可以有抽象類方法
-不能用new創建對象
-子類必須重寫abstract方法,同時去掉abstract修飾
-abstract類的對象作為上轉型對象,調用子類重寫的方法

對象的上轉型對象
-用法
Animal是Tiger的父類
Animal a;
a=new Tiger();
-教材P126的圖5.9!
ps:
-區分父類創建的對象和子類對象的上轉型對象
-可以將上轉型對象強制轉換回子類對象
-不能將父類創建的對象引用賦給子類對象


教材學習中的問題和解決過程

問題1:編譯Example5_6時,Example5_6.java使用或覆蓋了已過時的 API。
解決方法:源代碼中,使用JDK中的類的時候,調用了已經過時的方法。所謂過時方法,是有些沒有真正實現的方法,或存在潛在問題的方法。這些方法一般情況下,目前的JDK還支持,但在未來的某個版本中,可能就會取消的。所以,在本地使用的代碼不必擔心這個問題;要移值到其它計算機的程序必須要解決這個問題。

代碼托管:https://gitee.com/pyc-1751/chapter_1_of_java.git
代碼量截圖:(https://images.gitee.com/uploads/images/2019/0324/211946_4ff43866_4787449.png "微信截圖_20190324211431.png")

技術分享圖片

上周考試錯題總結

下列說法正確的是
A .如果想在方法中使用被隱藏的成員變量,可以使用關鍵字super。
B .double類型的成員變量的默認值為0,局部變量沒有默認值。
C .對成員變量的賦值操作只能放在方法中。
D .面向對象語言中的“類”相當於C語言中的“函數”。
-我誤選了B,答案為C
-double型變量的默認值為0.0

下列關於實例方法和類方法的敘述,正確的是
A .類方法不可以操作實例變量,因為在類創建對象之前,實例成員變量還沒有分配內存。
B .當創建第一個對象時,類中的實例方法就分配了入口地址,當再創建對象時,不再分配入口地址。
C .實例方法不能通過類名調用,只能由對象來調用。
D .不必創建對象就可以用類名直接調用static方法。
-答案是ABCD,我漏選C
-實例方法可以通過實例變量和類變量來調用
-類方法只能由類變量調用

下列A類中【代碼1】~【代碼5】哪些是錯誤的?

class Tom {

private int x = 120;

protected int y = 20;

int z = 11;

private void f() {

x = 200;

System.out.println(x);

}

void g() {

x = 200;

System.out.println(x);

}

}

public class A {

public static void main(String args[]) {

Tom tom = new Tom();

tom.x = 22; //【代碼1】

tom.y = 33; //【代碼2】

tom.z = 55; //【代碼3】

tom.f(); //【代碼4】

tom.g(); //【代碼5】

}

}
A .【代碼1】
B .【代碼2】
C .【代碼3】
D .【代碼4】
E .【代碼5】
-答案是AD
-private修飾的對象和方法不能被調用

#20175120彭宇辰 java第四周總結