欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Java語言中的抽象類與繼承

 更新時間:2022年10月20日 17:00:47   作者:臨風.  
這篇文章主要為大家詳細介紹了Java語言中的抽象類與繼承的相關(guān)資料,文中的示例代碼講解詳細,對我們學習Java有一定的幫助,感興趣的小伙伴快跟隨小編一起了解一下

一、實驗?zāi)康?/h2>

1、掌握抽象類的設(shè)計;

2、掌握抽象方法方法的實現(xiàn);

3、熟悉類的向下向上轉(zhuǎn)型,以及子類實例化父類對象的基本要求;

4、掌握通過類的繼承實現(xiàn)抽象類。

二、實驗要求

(一)編寫一個Shape抽象類,其中包含有:

1個成員變量:表示長度,數(shù)據(jù)類型為double。當類為Circle時,表示半徑;當類為Square時,表示其邊長; 2個抽象方法area()、perimeter(),分別用于計算圖形的面積、周長。

public abstract class Shape{
    private double length;  // 定義一個私有的成員變量

    public double getLength() { // 定義一個方法 getLength() 返回長度值
        return length;
    }

    public void setLength(double length) {  // 定義一個方法 setLength() 獲得長度值
        this.length = length;
    }
    public abstract double area();  // 定義一個抽象方法 area(),求面積
    public abstract  double perimeter();    // 定義一個抽象方法,求周長
}

(二)設(shè)計類Circle(圓形)和類Square(正方形),實現(xiàn)抽象類Shape中的所有抽象方法,其中計算圓的面積、周長時,π可以直接引用Math.PI。

class Circle extends Shape{ // 定義一個實現(xiàn)抽象類 Circle 圓形,繼承自抽象類 Shape
    @Override
    public double area() {  // 實現(xiàn)抽象類中的 area() 方法
        return Math.PI * getLength() * getLength(); // 返回圓的面積
    }

    @Override
    public double perimeter() { // 實現(xiàn)抽象類中的 perimeter() 方法
        return 2 * Math.PI * getLength();   // 返回圓的周長
    }
}

class Square extends Shape{ // 定義一個實現(xiàn)抽象類 Square 方形,繼承自抽象類 Shape
    @Override
    public double area() {  // 實現(xiàn)抽象類中的 area() 方法
        return getLength() * getLength();   // 返回方形的面積
    }

    @Override
    public double perimeter() { // 實現(xiàn)抽象類中的 perimeter() 方法
        return 4 * getLength(); // 返回方形的邊長
    }
}

(三)創(chuàng)建一個包含main方法的Test類,測試相關(guān)的類和抽象類。

class Test{ // 定義一個測試類
    public static void main(String[] args) {    // 主入口函數(shù)
        Shape circle = new Circle();    // 定義一個Shape 類型的circle對象,用Circle類進行實例化
        circle.setLength(3);    // 傳入?yún)?shù)
        System.out.println("圓的半徑為:" + circle.getLength());
        System.out.println("圓的面積為:" + circle.area());
        System.out.println("圓的周長為:" + circle.perimeter());

        Shape square = new Square();    // 定義一個Shape 類型的square對象,用Square類進行實例化
        square.setLength(3);    // 傳入?yún)?shù)
        System.out.println("正方形的邊長為為:" + square.getLength());
        System.out.println("正方形的面積為:" + square.area());
        System.out.println("正方形的周長為:" + square.perimeter());
    }
}

全部代碼展示

package experiment11.java;

public abstract class Shape{
    private double length;  // 定義一個私有的成員變量

    public double getLength() { // 定義一個方法 getLength() 返回長度值
        return length;
    }

    public void setLength(double length) {  // 定義一個方法 setLength() 獲得長度值
        this.length = length;
    }
    public abstract double area();  // 定義一個抽象方法 area(),求面積
    public abstract  double perimeter();    // 定義一個抽象方法,求周長
}

class Circle extends Shape{ // 定義一個實現(xiàn)抽象類 Circle 圓形,繼承自抽象類 Shape
    @Override
    public double area() {  // 實現(xiàn)抽象類中的 area() 方法
        return Math.PI * getLength() * getLength(); // 返回圓的面積
    }

    @Override
    public double perimeter() { // 實現(xiàn)抽象類中的 perimeter() 方法
        return 2 * Math.PI * getLength();   // 返回圓的周長
    }
}

class Square extends Shape{ // 定義一個實現(xiàn)抽象類 Square 方形,繼承自抽象類 Shape
    @Override
    public double area() {  // 實現(xiàn)抽象類中的 area() 方法
        return getLength() * getLength();   // 返回方形的面積
    }

    @Override
    public double perimeter() { // 實現(xiàn)抽象類中的 perimeter() 方法
        return 4 * getLength(); // 返回方形的邊長
    }
}

class Test{ // 定義一個測試類
    public static void main(String[] args) {    // 主入口函數(shù)
        Shape circle = new Circle();    // 定義一個Shape 類型的circle對象,用Circle類進行實例化
        circle.setLength(3);    // 傳入?yún)?shù)
        System.out.println("圓的半徑為:" + circle.getLength());
        System.out.println("圓的面積為:" + circle.area());
        System.out.println("圓的周長為:" + circle.perimeter());

        Shape square = new Square();    // 定義一個Shape 類型的square對象,用Square類進行實例化
        square.setLength(3);    // 傳入?yún)?shù)
        System.out.println("正方形的邊長為為:" + square.getLength());
        System.out.println("正方形的面積為:" + square.area());
        System.out.println("正方形的周長為:" + square.perimeter());
    }
}

三、實驗報告要求

1、按照程序編寫、調(diào)試、測試過程,在實驗報告中體現(xiàn)全部源代碼、基本調(diào)試過程、和最終的運行結(jié)果(原始屏幕)。

2、程序運行結(jié)束,在源代碼目錄中執(zhí)行Dir命令,把Dir執(zhí)行結(jié)果作為報告的最后部分提交。

四、實驗小結(jié)

抽象類同類相似,只是在設(shè)置方法時,沒有方法體的方法要在修飾符后加abstract,實現(xiàn)抽象類如果沒有完全實現(xiàn)抽象類中的方法,那么它仍然是一個抽象類,依然要用abstract來修飾。

在主函數(shù)中實例化類中,父類類型的變量用子類實例化時,此變量可以擁有父類的屬性和方法。

對象調(diào)用的方法如果已經(jīng)被子類重寫過了則調(diào)用的是子類中重寫的方法,而不是父類中的方法;

如果想要調(diào)用子類中和父類同名的成員變量,則必須通過getter方法或者setter方法;

如果想調(diào)用子類中和父類同名的靜態(tài)方法,直接子類 “類名點” 操作獲取,不要通過對象獲??;

到此這篇關(guān)于詳解Java語言中的抽象類與繼承的文章就介紹到這了,更多相關(guān)Java抽象類 繼承內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JDK1.8源碼下載及idea2021導(dǎo)入jdk1.8源碼的詳細步驟

    JDK1.8源碼下載及idea2021導(dǎo)入jdk1.8源碼的詳細步驟

    這篇文章主要介紹了JDK1.8源碼下載及idea2021導(dǎo)入jdk1.8源碼的詳細步驟,在文章開頭就給大家分享了JDK1.8源碼下載地址和下載步驟,告訴大家idea2021.1.3導(dǎo)入JDK1.8源碼步驟,需要的朋友可以參考下
    2022-11-11
  • java開發(fā)非公平鎖不可打斷源碼示例解析

    java開發(fā)非公平鎖不可打斷源碼示例解析

    這篇文章主要為大家介紹了java開發(fā)非公平鎖不可打斷源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Java 二叉樹遍歷特別篇之Morris遍歷

    Java 二叉樹遍歷特別篇之Morris遍歷

    二叉樹的遍歷(traversing binary tree)是指從根結(jié)點出發(fā),按照某種次序依次訪問二叉樹中所有的結(jié)點,使得每個結(jié)點被訪問依次且僅被訪問一次。四種遍歷方式分別為:先序遍歷、中序遍歷、后序遍歷、層序遍歷
    2021-11-11
  • Java如何使用Set接口存儲沒有重復(fù)元素的數(shù)組

    Java如何使用Set接口存儲沒有重復(fù)元素的數(shù)組

    Set是一個繼承于Collection的接口,即Set也是集合中的一種。Set是沒有重復(fù)元素的集合,本篇我們就用它存儲一個沒有重復(fù)元素的數(shù)組
    2022-04-04
  • 詳細講解springboot如何實現(xiàn)異步任務(wù)

    詳細講解springboot如何實現(xiàn)異步任務(wù)

    異步:異步與同步相對,當一個異步過程調(diào)用發(fā)出后,調(diào)用者在沒有得到結(jié)果之前,就可以繼續(xù)執(zhí)行后續(xù)操作。也就是說無論異步方法執(zhí)行代碼需要多長時間,跟主線程沒有任何影響,主線程可以繼續(xù)向下執(zhí)行
    2022-04-04
  • SpringBoot整合Redis實現(xiàn)登錄失敗鎖定功能(實例詳解)

    SpringBoot整合Redis實現(xiàn)登錄失敗鎖定功能(實例詳解)

    本文我們已經(jīng)探討如何利用Redis來實現(xiàn)鎖定賬戶的安全措施,以及通過SpringBoot整合Redis實現(xiàn)了這一功能,感興趣的朋友跟隨小編一起學習下吧
    2024-02-02
  • SpringBoot bean的多種加載方式示例詳解

    SpringBoot bean的多種加載方式示例詳解

    本文詳細介紹了在SpringBoot中加載Bean的多種方式,包括通過xml配置文件、注解定義、特殊方式如FactoryBean、@ImportResource、ApplicationContext以及使用@Import注解導(dǎo)入bean的方法,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • dubbo如何設(shè)置連接zookeeper權(quán)限

    dubbo如何設(shè)置連接zookeeper權(quán)限

    這篇文章主要介紹了dubbo如何設(shè)置連接zookeeper權(quán)限問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • java Aop實現(xiàn)自動填充字段值示例

    java Aop實現(xiàn)自動填充字段值示例

    這篇文章主要為大家介紹了Aop實現(xiàn)自動填充字段值示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Java并發(fā)編程Semaphore計數(shù)信號量詳解

    Java并發(fā)編程Semaphore計數(shù)信號量詳解

    這篇文章主要介紹了Java并發(fā)編程Semaphore計數(shù)信號量詳解,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10

最新評論