PTA 7-1 多态练习-计算面积

定义三个类,父类(抽象类)GeometricObject代表几何形状,子类Circle代表圆形,子类Rectangle代表矩形。具体属性和方法如下:
父类 (抽象类)GeometricObject
属性:
private String color;
private String name;
为上述变量提供getter()和setter()方法
构造方法:为color和name初始化
public GeometricObject(String color, String name)
抽象方法:
public void findArea();用于计算几何图形的面积

子类:
Circle
属性:
private double radius;半径
为上述变量提供getter()和setter()方法
构造方法:
设计构造方法为圆形的name,color和radius初始化
方法:
实现findArea()方法用于计算圆形的面积并返回计算结果

子类:
Rectangle
属性:
private double width;宽
private double height;高
为上述变量提供getter()和setter()方法
构造方法:
设计构造方法为圆形的name,color,width和height初始化
方法:
实现findArea()方法用于计算矩形的面积并返回计算结果

测试类Main
方法:
public static void main(String[] args) {
创建圆形对象("长方形","蓝色",3.2,4.5)
输出圆形的颜色和面积
创建矩形对象("圆形","红色",3.4)
输出矩形的颜色和面积
}
public static void show(GeomentricObject g){
//形参传入圆形或者矩形的对象,输出其面积
//判断传入的对象是圆形还是矩形
//如果是圆形就输出圆形的颜色和面积;
//如果是矩形就输出矩形的颜色和面积;
}
注意:1.所有类不用修饰词
2.测试类名称为“Main”,否则编译出错

在这里给出一组输入。例如:

输出样例:

在这里给出相应的输出。例如:

矩形的颜色是:蓝色,面积是:14.4
圆形的颜色是:红色,圆形的面积是:36.31681107549801

java的实验作业三

首先题目有错误和坑

没有输入

 题目里的Main应该是

public static void main(String[] args) {
创建矩形对象("长方形","蓝色",3.2,4.5)
输出矩形的颜色和面积
创建圆形对象("圆形","红色",3.4)
输出圆形的颜色和面积
}

输出有坑(跑了几次都错误才发现的)

注意看面积输出,矩形是  "面积是:"

圆形是  "圆形的面积是:"

这题不难,先写抽象方法(父类),再写子类,然后主函数调用父类就可以了

public class Main {    //PTA要求的Main注意M大写
	public static void main(String args[]) {
		GeometricObject r=new Rectangle("长方形","蓝色",3.2,4.5);
		show(r);
		GeometricObject c=new Circle("圆形","红色",3.4);
		show(c);
	}
	public static void show(GeometricObject g) {
			if(g.getname().equals("圆形")) {
				System.out.println("圆形的颜色是:"+g.getcolor()+","+"圆形的面积是:"+g.findArea());
			}
			else if(g.getname().equals("长方形")) {
				System.out.println("矩形的颜色是:"+g.getcolor()+","+"面积是:"+g.findArea());
			}
		}
}


//抽象类几何形状
abstract class GeometricObject{
	private String color;//共有的
	private String name;
	
	public String getcolor() {
		return color;
	}
	public void setcolor(String c) {
		color=c;
	}
	
	public String getname() {
		return name;
	}
	public void setname(String n) {
		name=n;
	}
	//带参的构造方法
	public GeometricObject(String name,String color) {
		this.name=name;
		this.color=color;
	}
	public abstract double findArea();//子类必须定义的抽象方法
}
class Circle extends GeometricObject{
	private double radius;
	public double getradius() {
		return radius;
	}
	public void setradius(double ra) {
		radius=ra;
	}
	public Circle(String name,String color,double radius) {
		super(name,color);//调用父类的构造方法
		this.radius=radius;
	}

	public double findArea() {
		return Math.PI*radius*radius;
	}
}
class Rectangle extends GeometricObject{
	private double width;
	private double height;
	public double getwidth() {
		return width;
	}
	public void setwidth(double wi) {
		width=wi;
	}
	
	public double getheight() {
		return height;
	}
	public void setheight(double he) {
		height=he;
	}
	public Rectangle(String name,String color,double width,double height) {
		super(name,color);
		this.width=width;
		this.height=height;
	}

	public double findArea() {
		return height*width;
	}
}

### 回答1: 要实现多态性的对象并调用shout方法打印输出信息,可以定义一个抽象的及多个子继承该并重写shout方法。在代码中,可以声明一个型的变量,然后将不同子对象赋值给该变量,然后通过调用shout方法,即可实现多态性的效果,并打印出不同子的信息。 ### 回答2: 多态方式实例化子对象并调用shout方法打印输出信息,是面向对象编程中的一个重要概念。该方式可以实现代码的灵活和重用性,使得同样的代码可以适应不同的对象。 在Java语言中,可以通过和子之间的多态关系来实现该功能。具体操作是:先定义一个,该包含一个shout方法,该方法打印输出信息。然后再定义多个子,这些子继承自,并对shout方法进行重写。 接下来,可以使用多态方式来实例化子对象并调用shout方法。具体操作是:定义一个方法,该方法参数为型,利用该方法可以实例化子对象并调用shout方法。具体实现过程是:先定义一个型的变量,然后通过该变量实例化子对象,并调用shout方法输出信息。 例如,定义一个名为Animal的,该包含一个名为shout的方法,用来打印动物的叫声。然后,定义两个子Cat和Dog,这两个子都继承自Animal,并对shout方法进行重写。Cat的shout方法输出"喵喵喵",Dog的shout方法输出"汪汪汪"。 接下来,定义一个名为callShout的方法,该方法的参数为Animal型,利用该方法可以实现多态实例化子对象并调用shout方法的功能。具体实现过程是:先创建一个型的变量animal,该变量根据传入的参数值进行多态实例化,然后调用该变量的shout方法打印输出信息。 最后,可以通过main方法调用callShout方法,并分别传入Cat、Dog的对象。调用Cat对象的shout方法输出"喵喵喵",调用Dog对象的shout方法输出"汪汪汪"。这样,就实现了多态方式实例化子对象并调用shout方法打印输出信息的功能。 ### 回答3: 多态是面向对象编程(OOP)中的一个重要概念。它允许我们使用的引用指向子的对象,从而调用和子中的方法和属性。 在Java中,我们可以通过以下两种方法实现多态: 1. 接口实现多态 2. 继承实现多态 其中继承实现多态是我们最为常见的方式。我们可以通过向上转型将子对象转换为对象,从而实现多态。 下面是一个示例代码,在Dog中实现shout方法,并使用Animal型的引用animal指向Dog型的对象,从而调用Dog中的shout方法: ``` class Animal { public void shout() { System.out.println("动物叫"); } } class Dog extends Animal { public void shout() { System.out.println("汪汪汪"); } } public class Main { public static void main(String[] args) { Animal animal = new Dog(); animal.shout(); } } ``` 在上面的代码中,我们首先定义了一个Animal,声明了一个shout方法。然后我们定义了一个Dog,它继承了Animal,并重写了shout方法。 在Main中,我们首先创建了一个Animal型的引用animal,然后使用new关键字创建一个Dog型的对象,并将它赋值给animal引用。这里通过向上转型将Dog对象转换为Animal型的对象,实现了的引用指向子的对象。 接着调用了animal对象的shout方法,输出了"汪汪汪"。这里实际上调用的是Dog中重写过的shout方法,而不是Animal中的shout方法。 通过上面的示例代码,我们可以看到在继承体系中使用多态的基本方法。实现多态可以让程序更加灵活和易于扩展,是Java面向对象编程中一个重要的概念。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值