日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java实验33 类的继承2_java实验2 类的继承性

發布時間:2025/3/19 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java实验33 类的继承2_java实验2 类的继承性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗2 類的繼承性

一、實驗目的

掌握面向對象的繼承性在Java中的實現方法;掌握super關鍵字的用法,體會抽象類和抽象方法的作用。

二、實驗內容

1.程序理解:

1)類的繼承

2)第4章課后編程第1題

class Student {

public String name;

public int age;

public Student(String name,int age){

this.name=name;

this.age=age;

}

public void show(){

System.out.println("name: "+name+" age: "+age);

}

}

class UnderGraduate extends Student{

public String degree;

public UnderGraduate(String name,int age,String degree){

super(name, age);

this.degree=degree;

}

public void show(){

System.out.println("name: "+name+" age: "+age+" degree: "+degree);

}

}

public class Test01{

public static void main(String[] args) {

Student student = new Student("zhangsan", 16);

student.show();

UnderGraduate underGraduate = new UnderGraduate("lisi", 20, "bechalor");

underGraduate.show();

}

2.編程題:

(1)請按照以下要求設計類。( 程序1)

要求如下:

1)設計Animal類。類中定義一個成員變量animalName,表示動物的名稱,變量animalName是String類型,默認初始值。在該類中再定義一個成員方法shout(),表示動物發出叫聲的行為,該方法能輸出名稱為animalName的動物發出叫聲,例如輸出“波斯貓發出叫聲”。

2)設計Cat類。使用關鍵字extends繼承Animal類。Cat類中定義一個public類型的構造方法,該構造方法擁有一個String類型的參數catName,通過該參數,為Cat類中繼承自Animal類的animalName成員變量賦值。

3)設計一個測試類。類名為ExtendsTest,在main方法中定義一個 String類型的name變量,并為它賦值為”波斯貓”,然后使用有參構造創建Cat類的對象,并使用對象的引用變量調用shout()方法。

(2)設計父類和一個子類,在子類里面通過super關鍵字去調用父類的成員變量和成員方法,在子類的構造方法中使用super關鍵字調用父類的構造方法,在測試類里進行驗證。(程序2)

(3)創建平面圖形抽象類(PlaneGraphic)及其子類三角形(Triangle), 圓(Circle),長方形(Rectangle)的一個繼承分級結構。在抽象類PlaneGraphic中,提供計算圖形周長和面積的抽象方法,并在各子類中實現抽象方法,從而根據不同類型的平面圖形計算相應的周長和面積。提示:三角形面積計算用海倫公式:,p為三角形的半周長。(程序3)

(4)請按照以下要求設計一個Outer類。(程序4)

要求如下:

1)定義一個外部類Outer,并在該類中定義一個靜態內部類Inner。

2)在內部類中定義一個靜態變量staticField和一個靜態方法staticMethod(),并將該變量的值設置為”靜態內部類的靜態變量”,該方法中輸出”靜態內部類的靜態方法”。

3)定義一個測試類,在main()方法中輸出staticField的值,并且調用靜態方法staticMethod()。

(5)熟悉Eclipse開發工具。

請自己學習課本第11章,熟悉使用Eclipse進行程序調試(418頁),了解jar文件的導入和導出(422頁)。

三、實驗結果和分析

說明:請截圖給出各個程序的運行結果,并做必要的分析。

(1)程序1運行結果

分析:Cat類通過extends關鍵字繼承了Animal類,這樣Cat類便是Animal類的子類。從運行結果不難看出,子類雖然沒有定義animalName屬性和shout()方法,但是卻能訪問這兩個成員,這就說明,子類在繼承父類的時候,會自動擁有父類的所有成員,Cat類定義了有參構造函數,在測試類的main方法中使用有參構造創建Cat類對象,運行結果如圖所示

(2)程序2運行結果

分析:定義了一個Child類繼承Father類,并重寫了Father類的eat()方法,在子類Child的eat()方法中使用”super.eat()”調用了父類被重寫的方法,在introFather()方法中使用“super.age”訪問父類的成員變量。從運行結果可以看出,子類通過super關鍵字成功地訪問父類的成員變量和成員方法。在實例化Child對象時一定會調用Child類的構造方法,從運行結果可以看出,Child類的構造方法被調用時,父類的構造方法也被調用了。

(3)程序3運行結果

分析:從運行結果可以看出,子類實現了父類的抽象對象后,可以正常進行實例化,并通過實例化對象調用方法。抽象類其實是約束子類的方法命名,在抽象父類中定義抽象方法,在子類中實現,不同的參數通過成員變量實現。

(4)程序4運行結果

分析:內部類Inner使用static關鍵字來修飾,是一個靜態內部類,實例化方式與非靜態的成員內部類的實例化方式不一樣,在靜態內部類中科院定義靜態的成員,而在非靜態的內部類中不允許定義靜態的成員。

四、實驗源代碼

說明:請將各程序的源代碼復制粘貼到這里。

(1)程序1源代碼

//定義Animal類

class Animal{

String animalName;

//定義動物叫的方法

void shout(){

System.out.println(animalName+"發出叫聲");

}

}

//定義Cat類繼承Animal類

class Cat extends Animal{

//類中定義一個public類型的構造方法

public Cat(String catName){

animalName=catName;

}

}

//定義測試類

public class ExtendsTest {

public static void main(String[] args) {

String name="波斯貓"; //定義一個 String類型的name變量,并為它賦值為”波斯貓”,

Cat cat=new Cat(name); //使用有參構造創建Cat類的對象

cat.shout(); //使用對象的引用變量調用shout()方法。

}

}

(2)程序2源代碼

//定義Father類

class Father{

int age=30;

String food="小熊餅干";

//定義Father類有參構造函數

public Father(String name){

System.out.println("我的名字叫"+name);

}

//定義喜歡吃的方法

void eat(){

System.out.println("我喜歡吃"+food);

}

}

//定義Child類

class Child extends Father{

//在子類的構造方法中使用super關鍵字調用父類的構造方法,

public Child(){

super("蠟筆小新");

}

//在子類里面通過super關鍵字去調用父類的成員方法,

void eat(){

super.eat();

}

//在子類里面通過super關鍵字去調用父類的成員變量

void introFather(){

System.out.println("我爸爸今年"+age+"歲了");

}

}

//定義測試類

public class Example2 {

public static void main(String[] args) {

Child child=new Child(); //創建一個Child類的實例對象

child.eat(); //調用Child類的eat方法

child.introFather(); //調用Child類的introFather方法

}

}

(3)程序3源代碼

import java.util.Scanner;

//定義抽象類PlaneGraphic

abstract class PlaneGraphic{

double area;

//定義抽象方法getArea

abstract void getArea();

}

//定義Triangle類繼承抽象類PlaneGraphic

class Triangle extends PlaneGraphic{

double a,b,c;

//定義Triangle類有參構造函數

public Triangle(double a,double b,double c){

this.a=a;

this.b=b;

this.c=c;

}

//實現抽象方法getArea()

void getArea(){

double p=(a+b+c)/2;

double area=Math.sqrt(p*(p-a)*(p-b)*(p-c));

System.out.println("該三角形的面積是:"+area);

}

}

//定義Circle類繼承抽象類PlaneGraphic

class Circle extends PlaneGraphic{

double r;

//定義Circle類有參構造函數

public Circle(double r){

this.r=r;

}

//實現抽象方法getArea()

void getArea(){

double area=Math.PI*r*r;

System.out.println("該圓的面積是:"+area);

}

}

//定義Rectangle類繼承抽象類PlaneGraphic

class Rectangle extends PlaneGraphic{

double x,y;

//定義Rectangle類有參構造函數

public Rectangle(double x,double y){

this.x=x;

this.y=y;

}

//實現抽象方法getArea()

void getArea(){

double area=x*y;

System.out.println("該矩形的面積是:"+area);

}

}

//定義測試類

public class Example3 {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

System.out.println("請輸入三角形的邊長:");

double a1=sc.nextDouble();

double b1=sc.nextDouble();

double c1=sc.nextDouble();

Triangle t=new Triangle(a1,b1,c1);//實例化Triangle對象

t.getArea();

System.out.println("請輸入圓的半徑:");

double r1=sc.nextDouble();

Circle c=new Circle(r1); //實例化Circle對象

c.getArea();

System.out.println("請輸入矩形的邊長:");

double x1=sc.nextDouble();

double y1=sc.nextDouble();

Rectangle re=new Rectangle(x1,y1); //實例化Rectangle對象

re.getArea();

}

}

(4)程序4源代碼

//定義一個外部類

class Outer{

//下面的代碼定義了一個靜態內部類

static class Inner{

static String staticField="靜態內部類的靜態變量";

static void staticMethod(){

System.out.println("靜態內部類的靜態方法");

}

}

}

//定義測試類

public class Example4 {

public static void main(String[] args) {

Outer.Inner inner=new Outer.Inner();//創建內部類對象

System.out.println(inner.staticField);

inner.staticMethod();

}

}

總結

以上是生活随笔為你收集整理的java实验33 类的继承2_java实验2 类的继承性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。