java 继承与多态 习题_Java-继承,多态练习

本文通过多个实例展示了Java中的继承与多态特性。包括People类及其子类ChinaPeople和AmericnPeople,Monkey和People类的继承关系,以及Human类与其子类Man和Woman的实现。每个例子都详细说明了如何创建对象并测试类的功能,如方法的覆盖和调用。
摘要由CSDN通过智能技术生成

47dcc9850bc2e55ba2efe8fc04852444.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

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()

{

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

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");

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

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");

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

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();

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

5d77552af47566fdf756aa8d1d44dbd8.png

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个类的功

能。

父类:

48304ba5e6f9fe08f3fa1abda7d326ab.png

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("咿咿呀呀......");

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

子类:

48304ba5e6f9fe08f3fa1abda7d326ab.png

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("别说话!认真思考!");

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

测试:

48304ba5e6f9fe08f3fa1abda7d326ab.png

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();

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

结果:

e6c849a74c5a951e7fb532ad182acf21.png

4

定义类Human,具有若干属性和功能;定义其子类Man、Woman; 在主类Test中分别创建子类、父类和上转型对象,并测试其特性。

父类:

48304ba5e6f9fe08f3fa1abda7d326ab.png

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("我能工作");

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

子类:

48304ba5e6f9fe08f3fa1abda7d326ab.png

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);

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

测试:

48304ba5e6f9fe08f3fa1abda7d326ab.png

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; //在转型所需要的类型

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

5

28.按要求编写一个Java应用程序:

(1)定义一个类,描述一个矩形,包含有长、宽两种属性,和计算面积方法。

(2)编写一个类,继承自矩形类,同时该类描述长方体,具有长、宽、高属性,

和计算体积的方法。

(3)编写一个测试类,对以上两个类进行测试,创建一个长方体,定义其长、

宽、高,输出其底面积和体积。

父类:

48304ba5e6f9fe08f3fa1abda7d326ab.png

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;

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

子类:

48304ba5e6f9fe08f3fa1abda7d326ab.png

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;

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

测试:

48304ba5e6f9fe08f3fa1abda7d326ab.png

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());

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

结果:

ee58b0c0e127793593909bdb0a3c371f.png

6

编写一个Shape类,具有属性:周长和面积;

定义其子类三角形和矩形,分别具有求周长的方法。

定义主类E,在其main方法中创建三角形和矩形类的对象,

并赋给Shape类的对象a、b,使用对象a、b来测试其特性。

父类:

48304ba5e6f9fe08f3fa1abda7d326ab.png

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();

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

子类;

48304ba5e6f9fe08f3fa1abda7d326ab.png

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;

}

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

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;

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

测试;

48304ba5e6f9fe08f3fa1abda7d326ab.png

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());

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

结果:

7d871c6f42c2b7297c63837236e88416.png

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值