1. 程式人生 > >尚學堂java 答案解析 第五章

尚學堂java 答案解析 第五章

本答案為本人個人編輯,僅供參考,如果讀者發現,請私信本人或在下方評論,提醒本人修改

一.選擇題

1.AB

解析:A可以被所有類訪問,B可以被當前包的所有類訪問,也可以被所有子類訪問

2.A

解析:所有子類會先用super()方法呼叫父類構造方法,再呼叫自己的構造方法

3.D

解析:上轉型物件無法使用物件的新增方法,只能使用繼承或重寫的方法

4.ABD

解析:A.abstract類可以有abstract方法,也可以有非abstrct方法

        B:非abstract類為abstract類的子類的話,必須重寫父類方法,如果子類也是abstract類的話,可以繼承或重寫abstra方法

        D:abstract類不能new物件,但可以成為子類的上轉型物件,此時該物件可以呼叫子類的重寫方法

5.AC

解析:B:final可以修飾介面變數,但不能修飾介面方法,因為介面的方法是是抽象方法,必須通過子類繼承重寫來實現

       D:介面的方法一定是public的,以在其他類中實現

二.簡答題

父類非抽象類:呼叫父類的構造方法,然後呼叫子類自己的構造方法(如果有)

   父類為抽象類:(無參)呼叫父類的無參構造方法,然後呼叫自己的構造方法(如果有)

                          (有參)子類顯示申明呼叫父類的有參建構函式,然後在呼叫子類的構造方法(如果有)

上轉型:Parents  a = new Children();父類申明,子類實現,能使用子類隱藏或繼承的變數,繼承或重寫的方法,不能使用子類新增的變數或方法;

   下轉型:a = (Children)a;子類由申明的父類強制轉型為子類,可以使用子類的方法,但只有上轉型物件才能使用下轉型,純父類物件是不能轉為子類的物件,編譯不會報錯,但無法執行通過

4.final是為了封裝而生的,final父類方法一旦申明,子類只能繼承無法修改,用於具有普適性的方法和變數.final類無法被繼承.

   abtract是為了抽象而生的,abstract類的子類只要不是abstract類,必須重寫父類的abstract類.abstract方法不允許實現(沒有方法體)

==對基本資料型別比較的是值,對引用型別比較的是地址

equals()比較的是物件是否是同一個物件,即兩個物件的地址是否一致;

三.編碼題

1.

import java.math.BigDecimal;
import java.util.Scanner;

public class Circle {
    private float radius = 0.0f;
    final float PI = 3.14f;
    Circle(){
        System.out.println("呼叫父類的無參建構函式");
    };
    Circle(float r){
        this.radius = r;
        System.out.println("呼叫父類的有參建構函式"+r);
    }
    double getArea(){
        return radius*PI*PI;
    };
    double getPerimeter(){
        return 2*radius*PI;
    };
    void  show(){
        System.out.println("呼叫父類的show()函式");
        System.out.printf("半徑:%2.2f\n面積:%3.3f\n周長:%3.2f\n",radius,getArea(),getPerimeter());
    }
}
class Cylinder extends  Circle{
    private double height = 0.0f;
    Cylinder(float r,float height){
        super(r);
        this.height=height;
        System.out.println("呼叫子類的有參建構函式");

    };
    double getVolume(){
        return getArea()*height;
    };
    void showVolume(){
        System.out.println("呼叫子類的show()函式");
        System.out.printf("體積:%3.3f", getVolume());
    }
        };
class ch5_1{
    public static void main(String[] args) {
        float r = 0.0f;
        float h = 0.0f;
        double area = 0.0f;
        double perimeter = 0.0f;
        double volum = 0.0f;

        Scanner input_r = new Scanner(System.in);
        System.out.print("請輸入半徑:");
        r=input_r.nextFloat();
        Scanner input_h = new Scanner(System.in);
        System.out.print("請輸入高:");
        h=input_h.nextFloat();

        Circle circle = new Cylinder(r,h);
        //呼叫父類的show
        circle.show();


        Cylinder cylinder = (Cylinder)circle;
        cylinder.showVolume();




    }
}

2.

public abstract class Instrument {
    String name;
    String sound;
    abstract String makeSound();
}

class  Erhu extends Instrument{
    Erhu(){
        name = "Erhu";
        sound = "二胡聲";
    }

    String makeSound(){

        return sound;
    }
}
class  Piano extends Instrument{
    Piano(){
        name = "Piano";
        sound = "鋼琴聲";
    }

    String makeSound(){

        return sound;
    }
}
class  Violin extends Instrument{
    Violin(){
        name = "Violin";
        sound = "小提琴聲";
    }

    String makeSound(){

        return sound;
    }
}

class Musician{
   void play(Instrument i){

       System.out.println(i.makeSound());
   };
}
class  ch5_2{
    public static void main(String[] args) {
        Erhu erhu = new Erhu();
        Piano piano = new Piano();
        Violin violin = new Violin();

        Musician musician = new Musician();

        musician.play(erhu);
        musician.play(piano);
        musician.play(violin);
    }
}

3.

public class Actor  implements  MovieStar,TVStar,Singer{
   String name;
   Actor(String name){
       this.name = name;
       System.out.println("大家好,我是"+name);
   };
    @Override
    public void movieActor() {
        System.out.println("我會演電影!");
    }

    @Override
    public void tvActor() {
        System.out.println("我會演電視!");
    }

    @Override
    public void sing() {
        System.out.println("我會唱歌!");
    }
}
interface MovieStar{
    void movieActor();
}
interface TVStar{
    void tvActor();
}
interface Singer{
    void sing();
}
class ch5_3{
    public static void main(String[] args) {
    Actor actor = new Actor("楊冪");
    actor.movieActor();
    actor.tvActor();
    actor.sing();
    }
}

.

相關推薦

學堂java 答案解析

本答案為本人個人編輯,僅供參考,如果讀者發現,請私信本人或在下方評論,提醒本人修改 一.選擇題 1.AB 解析:A可以被所有類訪問,B可以被當前包的所有類訪問,也可以被所有子類訪問 2.A 解析:所有子類會先用super()方法呼叫父類構造方法,再呼叫自己的構造方法

學堂java 答案解析

本答案為本人個人編輯,僅供參考,如果讀者發現,請私信本人或在下方評論,提醒本人修改 一.選擇題 1.BD 解析:B:類必須有構造方法,若程式未寫,這系統自動呼叫系統構造方法.         D:super()會呼叫父類的構造方法,但父類的構造方法不一定無參 2.D

學堂java 答案解析

本答案為本人個人編輯,僅供參考,如果讀者發現,請私信本人或在下方評論,提醒本人修改 一.選擇題 1.C 解析:對void下的函式,可以使用"return;"表示結束之意,但不能"return i",因為資料是void, try-catch-finally:正確執行:t

學堂java答案解析 第一

本答案為本人個人編輯,僅供參考,如果讀者發現,請私信本人或在下方評論,提醒本人修改 一.選擇題: 1.C 解析:java為了安全,中並沒有引入C語言的指標概念. 2.AD 解析:B:Java先通過javac編譯,再通過java直譯器進行解釋執行.C:java具有跨平

學堂java答案解析 第二

本答案為本人個人編輯,僅供參考,如果讀者發現,請私信本人或在下方評論,提醒本人修改 一.選擇題: 1.CD 解析:A public是關鍵字. B 第一個不能是數字 2.C 解析:j=i++  <=> j=i; i++ 3.A 解析:float資料需要

JAVA-初步認識--數組-常見操作-遍歷

nbsp -s 常見操作 復用 通過 最重要的 size 方法 變量 一. 數組操作 定義好數組後,要存儲在數組中的數據拿出來操作。怎麽取? 對於數組操作最重要的操作有兩種,一個是存,另一個是取。同時,基於這兩個操作又衍生出常見的功能性操作。 存取的核心思想:對角標的操作。

JAVA-初步認識--數組-常見操作-選擇排序

nbsp 延伸 .com 進行 src 自己的 初步 排序 .cn 一. 排序 元素有很多的情況下,我們都希望元素按照指定的方式有一個順序,比如說由小到大。排序的方式有很多種,我們講解其中一種。 例子: 對上面的數組中的元素排個序,從小到大。這個想不出來,之前談論的是

JAVA-初步認識--數組-常見操作-冒泡排序

感覺 位置 最大 開始 解法 r語 內部 最終 控制 一. 冒泡排序 這裏介紹了另一種排序的方法,冒泡排序法。選擇排序法比較接近人們正常的思維,一個數據和剩下的說有數據比較。 冒泡排序法是臨近的數據間進行比較,大的數據就調到右側,角標1-2的數據對比,角標2-3的數據

JAVA-初步認識--數組-常見操作-排序位置

dos 嵌套for 都是 排序 logs 格式 深入 放置 裏的 一. 本節是接著前面的冒泡排序的兩種書寫格式而來的,是以視頻中的兩種書寫格式為基礎講解的,對於我自己琢磨的不適合。註重視頻中講解的思想。 視頻中兩種書寫格式中,內循環都是一樣的,為了他提高復用性,將相同的內

JAVA-初步認識--數組-常見操作-排序的性能問題

變量 數據交換 -1 常見操作 對比 一個 nbsp 數組 討論 一. 這裏對前面的選擇排序操作進行了深化,之前討論的選擇排序是將0角標上的數據和後面角標的數據一個個進行對比,不斷地調換數據的位置,直到0角標上的數據是整個數組中的最小值。由於調換的次數較多,現在引發一個疑問

JAVA-初步認識--數組-常見操作-查找&折半查找-練習

分享 es2017 http com ges 操作 初始化 mage 第五章 一. 數組初始化後,長度就固定了。JAVA-初步認識-第五章-數組-常見操作-查找&折半查找-練習

JAVA-初步認識--數組-查表法練習

得到 font 設置 來看 num 限制 day 返回值 自己 一. 查表法是一種思想,是一種生活中都會存在的操作。 查表法的特征在於:有對應關系。對應關系的一方上是有序的編號。如果有序的編號不從0開始,重新設置角標即可。 星期就可以使用查表法,星期一是monday,

Java 解惑》 異常之謎

簡述: 《Java 解惑》 第五章 異常之謎 - 筆記 內容: 謎題36: try中的return不會影響finally中方法執行 package 異常之謎.優柔寡斷; public class Indecisive { public static vo

201711671118《Java程式設計》總結

5.1子類與父類 ①JAVA不支援多重繼承,即子類只能有一個父類。 ②使用關鍵字extends來定義一個類的子類。如:class Student extends People{...} ③Object是所有類的祖先類。如果一個類(除了Object類)的宣告中沒有使用extends關鍵字,

Java程式設計》學習總結

201711671111 《Java程式設計》第五章學習總結二 教材學習內容總結 1.繼承是一種由己有的類建立新類的體制。Java不支援多重繼承,即子類只能有一個父類。 2.子類:在類的宣告中,通過關鍵字extends來定義一個類的子類。 3.Object是所有類的祖先類。

Java程式設計思想初始化與清理練習題解答

目錄 1、構造器 練習1 練習2 3、方法過載 練習3 練習4 練習5 練習6 練習7 練習8 練習9 練習10 練習14 練習16

201711671106《Java程式設計》學習總結

教材學習內容總結 主要學習了第五章子類與繼承 一、子類與父類 子類是具有父類共有屬性的類,通過使用關鍵字extends繼承父類的屬性和行為,並定義自身的屬性和行為。 object是所有類的祖先。 子類與父類的繼承性,主要分為兩種情況 ①子類與父類在同一包中:除私有外都能繼承成

201711671105 《Java程式設計》學習總結

教材學習內容總結 1.子類與父類 1.1子類 子類繼承一般類的屬性和行為,並根據需要增加它自己的新的屬性的子類,子類繼承一般類的屬性和行為,並根據需要增加它自己的新的屬性與行為的的的.java不支援多重繼承,即子類只能有一個父類。 物件是所有類的祖先類。 class 子類名 ex

Java 程式設計思想

                                                                       第五章初始化與清理     初始化與清理是設計安全的兩個問題,C語言中如果使用者不知如何初始化庫的構建,另外資源的佔用,忘記了釋放導

Java程式設計思想 :初始化與清理

1. 用構造器初始化 Java中通過提供構造器,確保每個類的物件都可以得到初始化,構造器的形式為: className(){ //--- } 可以看見程式在初始化物件的時候自動執行了構造方法。 如果類中只有唯一的一個帶引數的構造器,那麼預設的無參構造器將不可用。