第一次

继承与派生练习中获得与问题

问题

在这次练习中遇到一些问题:关于子类中书写出一些问题(我在子类写一个构造器不知道为什么编译器一直在报错),虽然我在最后写出了正确的代码,但我仍然没有解决这个问题,只是通过子类的super()的方式,在Rectangle中新加了一个构造器如下解决问题.
public class Square extends Rectangle {

public Square(double side) {
	super(side);
	// TODO Auto-generated constructor stub
}

}

public Rectangle(double side) { //Rectangle中新加了一个构造器
this.length=side;
this.width=side;
}

所得

eclipse快捷键 选中代码注释: 选中 Ctrl+/
输出语句:syso alt+/
类的源码:Ctrl+左
生成构造器: 右 Source gcuf

感觉想法和实操差距好大:想的时候觉得很简单,实操起来困难重重

毕竟第一次发CSDN博客,也同时学习csdn-markdown编辑器

uml图

在这里插入图片描述

代码

Shape.Java
public interface Shape {
	public double GetArea();
	public double GetPerim();
}
Rectangle.java
public class Rectangle implements Shape {
private	double length;
private double width;
	public Rectangle(double length, double width) {
	super();
	this.length = length;
	this.width = width;
}
	
	public Rectangle(double side) {
		this.length=side;
		this.width=side;
	}
	public double GetArea() {
		// TODO Auto-generated method stub
		return length*width;
	}

	public double GetPerim() {
		// TODO Auto-generated method stub
		return (length+width)*2;
	}

}
Circle.java
public class Circle implements Shape {
private  double R;
	public Circle(double r) {
	super();
	R = r;
}

	@Override
	public double GetArea() {
		// TODO Auto-generated method stub
		return Math.PI*R*R;
	}

	@Override
	public double GetPerim() {
		// TODO Auto-generated method stub
		return Math.PI*2*R;
	}

}
Test.java
import java.util.Scanner;

public class test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		System.out.println("输入边:");//正方形
		double side=scanner.nextDouble();
		Square square=new Square(side);
		System.out.println("长方形面积为"+square.GetArea());
		System.out.println("长方形周长为"+square.GetPerim());
		
		System.out.println("输入长:");//长方形
		double length=scanner.nextDouble();
		System.out.println("输入宽:");
		double width=scanner.nextDouble();
		Rectangle rectangle=new Rectangle(length,width);
		System.out.println("长方形面积为"+rectangle.GetArea());
		System.out.println("长方形周长为"+rectangle.GetPerim());
		
		System.out.println("输入半经:");//圆
		double R=scanner.nextDouble();
		Circle circle=new Circle(R);
		System.out.println("圆面积为"+circle.GetArea());
		System.out.println("圆周长为"+circle.GetPerim());
		
		
		
//		Rectangle rectangle=new Rectangle(5,5);
//		System.out.println("长方形面积为"+rectangle.GetArea());
//		System.out.println("长方形周长为"+rectangle.GetPerim());
//		Circle circle=new Circle(2);
//		System.out.println("圆面积为"+circle.GetArea());
//		System.out.println("圆周长为"+circle.GetPerim());
	}

}
Square.java
public class Square extends Rectangle {

	public Square(double side) {
		super(side);
		// TODO Auto-generated constructor stub
	}

}

代码结果图

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值