Java-繼承,多態練習


1,實現如下類之間的繼承關系,並編寫Music類來測試這些類。

復制代碼
package com.chuoji.text01;

public class Instrument {
    
    public void play()
    {
        System.out.println("彈奏音樂");
    }
}
復制代碼
public class Brass extends Instrument {

    public void play()
    {
        System.out.println("彈奏brass");
    }
    public void play2()
    {
        System.out.println("調用brass的play2");
    }
    
}
復制代碼
 
         
復制代碼
public class Music {
    
    public static void tune(Instrument i)
    {
        i.play();
    }
     public static void main(String[] args)
     {
        Wind w= new Wind();
        Brass b= new Brass();
        tune(w);
        tune(b);
     }
    
}
復制代碼
復制代碼
public class Music {
    
    public static void tune(Instrument i)
    {
        i.play();
    }
     public static void main(String[] args)
     {
        Wind w= new Wind();
        Brass b= new Brass();
        tune(w);
        tune(b);
     }
    
}
復制代碼
 
 
 
 
2。

創建如下三個類:(People類中的三個方法分別輸出一些信息,ChinaPeople 和AmericanPeople類重寫父類的三個方法)。

 

復制代碼
package zhongqiuzuoye;

public class People {
    protected double height;
    protected double weight;
    public double getHeight() {
        return height;
    }
    public void setHeight(double height) {
        this.height = height;
    }
    public double getWeight() {
        return weight;
    }
    public void setWeight(double weight) {
        this.weight = weight;
    }
    
    public void speakHello()
    {
    }
    public void averageHeight()
    {
    }
    public void averageWeight()
    {        
    }

}
復制代碼
復制代碼
package zhongqiuzuoye;

public class ChinaPeople extends People{
    public void chinaGoufu()
    {
        System.out.println("坐如鍾,站如松");
    }
    public void speakHello()
    {
        System.out.println("你好");
    }
    public void averageHeight()
    {
        System.out.println("中國人平均身高為170cm");
    }
    public void averageWeight()
    {
        System.out.println("中國人平均體重是70kg");
    }

    

}
復制代碼
復制代碼
package zhongqiuzuoye;

public class AmericnPeople extends People{
    public void chinaGoufu()
    {
        System.out.println("直拳");
    }    
    public void speakHello()
    {
        System.out.println("hello");
    }
    public void averageHeight()
    {
        System.out.println("美國人平均身高為180cm");
    }
    public void averageWeight()
    {
        System.out.println("美國人平均體重是80kg");
    }

}
復制代碼
復制代碼
package zhongqiuzuoye;

public class TestPeople {
    
    public static void main(String[] args) {
        
        ChinaPeople c =new ChinaPeople();
        c.speakHello();
        c.averageHeight();
        c.averageWeight();
        
        AmericnPeople a=new AmericnPeople();
        a.speakHello();
        a.averageHeight();
        a.averageWeight();


}
}
復制代碼

 

 

3.

編寫一個Java應用程序,該程序包括3個類:Monkey類、People類和主類

E。要求:

(1) Monkey類中有個構造方法:Monkey (String s),並且有個public void speak()

方法,在speak方法中輸出“咿咿呀呀......”的信息。

(2)People類是Monkey類的子類,在People類中重寫方法speak(),在speak方法

中輸出“小樣的,不錯嘛!會說話了!”的信息。

(3)在People類中新增方法void think(),在think方法中輸出“別說話!認真思考!”

的信息。

(4)在主類E的main方法中創建Monkey與People類的對象類測試這2個類的功

能。

父類:

復制代碼
package com.lianxi2;

public class Monkey {
    
    private String s;
    
    public String getS() {
        return s;
    }


    public void setS(String s) {
        this.s = s;
    }


    public Monkey(String s)
    {
        this.s=s;
    }
    

    public Monkey() {
        super();
    }


    public void speak()
    {
        System.out.println("咿咿呀呀......");
    }
}
復制代碼

子類:

復制代碼
package com.lianxi2;

public class People extends Monkey {
    private String st;
    
    
    public People(String s, String st) {
        super(s);
        this.st = st;
    }

    public void speak()
    {
        System.out.println("小樣的,不錯嘛!會說話了!");
        
    }
    
    public void think()
    {
        System.out.println("別說話!認真思考!");
    }
}
復制代碼

測試:

復制代碼
package com.lianxi2;

public class M {

    public static void main(String[] args) {
        People pe=new People("你好","傻子");
        pe.speak();
        pe.think();
        Monkey m=new Monkey();
        m.speak();
    }

}
復制代碼

結果:

 

 

 

4

定義類Human,具有若干屬性和功能;定義其子類Man、Woman; 在主類Test中分別創建子類、父類和上轉型對象,並測試其特性。

父類:

復制代碼
package com.lianxi3;

public class Human {
    private String speak;
    private String jump;
    public String getSpeak() {
        return speak;
    }
    public void setSpeak(String speak) {
        this.speak = speak;
    }
    public String getJump() {
        return jump;
    }
    public void setJump(String jump) {
        this.jump = jump;
    }
    public Human(String speak, String jump) {
        super();
        this.speak = speak;
        this.jump = jump;
    }
    public Human() {
        super();
    }
    
    public void Jump()
    {
        System.out.println("跳:"+jump);
    }
    public void Speak()
    {
        System.out.println("說:"+speak);
    }
    public void as()
    {
        System.out.println("我能工作");
    }

}
復制代碼

子類:

復制代碼
package com.lianxi3;

public class Man extends Human {
    private String shui;
    

    public String getShui() {
        return shui;
    }


    public void setShui(String shui) {
        this.shui = shui;
    }


    
    
    public void Shui()
    {
        System.out.println("睡"+shui);
    }
    

}
復制代碼

測試:

復制代碼
package com.lianxi3;

public class Test {

    public static void main(String[] args) {
        Man m=new Man();
        m.setJump("低");
        m.setShui("長");
        m.setSpeak("粗");
        System.out.println("聲音:"+m.getSpeak()+" 跳:"+m.getJump()+" 睡:"+m.getShui());
        
        //向上轉型
        Human h=new Man();
        h.as();  //如果方法被重寫,則調用子類的函數
        
        
        //向下轉型
        Object ob=new Man();//先轉形成等級最高的object
        
        Man ma=(Man)ob;  //在轉型所需要的類型
        
        
    }

}
復制代碼

 

 

5

28.按要求編寫一個Java應用程序:

(1)定義一個類,描述一個矩形,包含有長、寬兩種屬性,和計算面積方法。

(2)編寫一個類,繼承自矩形類,同時該類描述長方體,具有長、寬、高屬性,

和計算體積的方法。

(3)編寫一個測試類,對以上兩個類進行測試,創建一個長方體,定義其長、

寬、高,輸出其底面積和體積。

父類:

復制代碼
package com.lianxi4;

public class Juxing {

    private double     chang;
    private double kuan;
    
    
    
    public double getChang() {
        return chang;
    }


    public void setChang(double chang) {
        this.chang = chang;
    }


    public Juxing(double chang, double kuan) {
        super();
        this.chang = chang;
        this.kuan = kuan;
    }
    

    public Juxing() {
        super();
    }


    public double mianJi()
    {
        return chang*kuan;
        
    }


}
復制代碼

子類:

復制代碼
package com.lianxi4;

public class Tiji extends Juxing {
     private double gao;

    public Tiji(double chang, double kuan, double gao) {
        super(chang, kuan);
        this.gao = gao;
    }
     
    public double tiJi()
    {
         return super.mianJi()*gao;
        
    }

}
復制代碼

測試:

復制代碼
package com.lianxi4;

public class Test {

    public static void main(String[] args) {
        Tiji ti=new Tiji(5,6,7);
        System.out.println("面積:"+ti.mianJi());
        System.out.println("體積:"+ti.tiJi());

    }

}
復制代碼

結果:

 

 

 

6

編寫一個Shape類,具有屬性:周長和面積;

定義其子類三角形和矩形,分別具有求周長的方法。

定義主類E,在其main方法中創建三角形和矩形類的對象,

並賦給Shape類的對象a、b,使用對象a、b來測試其特性。

父類:

復制代碼
package com.lianxi5;

//抽象類
public abstract class Shape {
    private double mianJi;
    private double zhouchang;
    public double getMianJi() {
        return mianJi;
    }
    public void setMianJi(double mianJi) {
        this.mianJi = mianJi;
    }
    public double getZhouchang() {
        return zhouchang;
    }
    public void setZhouchang(double zhouchang) {
        this.zhouchang = zhouchang;
    }
    
    public abstract double zhouchang();
    
    
    

}
復制代碼

子類;

復制代碼
package com.lianxi5;

public class Zc extends Shape {
    private double x;
    private double y;
    private double z;
    

    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getY() {
        return y;
    }

    public void setY(double y) {
        this.y = y;
    }

    public double getZ() {
        return z;
    }

    public void setZ(double z) {
        this.z = z;
    }

    @Override
    public double zhouchang() {
        if((x+y)>z&&(x+z)>y&&(y+z)>x)
        {
            return x+y+z;
        }
        else
        {
        return 0;
        }
        
    
    }


}
復制代碼
復制代碼
package com.lianxi5;

public class Jxzc extends Shape {
    private double x;
    private double y;
    

    public double getX() {
        return x;
    }


    public void setX(double x) {
        this.x = x;
    }


    public double getY() {
        return y;
    }


    public void setY(double y) {
        this.y = y;
    }


    @Override
    public double zhouchang() {
        
        return (x+y)*2;
    }

}
復制代碼

測試;

復制代碼
package com.lianxi5;

public class Test {

    public static void main(String[] args) {
        Zc z=new Zc();
        Jxzc j=new Jxzc();
        z.setX(7);
        z.setY(8);
        z.setZ(9);
        System.out.println(z.zhouchang());
        
        

    }

}
復制代碼

結果:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM