分了四个类class,用于保证内部继承属性的Sharp,矩形(Rectangle),圆(Circle)和调试用(initial);
Sharp:
package com.test2; public abstract class Sharp { public abstract void length(); public abstract void aera(); }
没什么说的就是个模板;
Circle:
package com.test2; public class Circle extends Sharp { public final double pi = 3.1415926; public double r; public void getR(double r){ this.r=r; } @Override public void length() { // TODO Auto-generated method stub double length = 2*pi*r; System.out.println("the Circle's length is "+length); } @Override public void aera() { // TODO Auto-generated method stub double aera = pi*r*r; System.out.println("the Circle's aera is "+aera); } }
继承Sharp,用getR将R分开;
Rectangle:
package com.test2; public class Rectangle extends Sharp { public int Long; public int wide; public void getLong(int Long ,int wide){ this.Long = Long; this.wide= wide; } @Override public void length() { // TODO Auto-generated method stub int length = 2*(Long+wide); System.out.println("the Rentangle's length is "+length); } @Override public void aera() { // TODO Auto-generated method stub int aera = Long*wide; System.out.println("the Rentangle's area is "+aera); } }
用 getLong(int,int)获得长,宽;
initail:
package com.test2; import java.util.Scanner; public class Initail { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("enter 1 for Rectangle ,0 for Circle"); Scanner scan = new Scanner(System.in); int i =(int)scan.nextDouble(); switch(i){ case 0: System.out.println("please enter r of the Circle:"); Circle cir = new Circle(); cir.getR(scan.nextDouble()); cir.length(); cir.aera(); break; case 1: Rectangle rectan = new Rectangle(); System.out.println("please enter the long and wide of the Rectangle:"); rectan.getLong((int)scan.nextDouble(),(int)scan.nextDouble()); rectan.length(); rectan.aera(); } } }
常规输出,还可以把输出再放到一个方法里面,避免写两条
rectan.length();
rectan.aera();
我懒就省了...
运行结果:
初学者表示楼主这段代码很有用,非常感谢!
谢谢楼主答案。
可读性好差。