编写一个完整的Java程序,要求:
(1)定义一个抽象类Shape,在该类中:
创建抽象方法Area()和printArea(), Area() 求解并返回面积,printArea() 用于输出面积,无返回值。
(2)创建Shape类的子类Rectangle(矩形)类,该类中:
包括两个私有整型变量width(宽)和length(长);
定义一个构造方法对width和length进行初始化;
在该类中实现抽象类中所定义的抽象方法;
(3)定义主类Test,在主方法中:
创建矩形实例,用构造方法初始化长、宽分别为3和4,求解并输出该矩形的面积。
题目中未涉及到的信息,可自行确定
abstract class Shape{ //抽象类(一定有抽象方法,但不一定都是抽象方法)
protected double area;
abstract void showArea(); //抽象方法
}
class Rectangle extends Shape{ //类的继承
private double x,y;
Rectangle(){}
Rectangle(double x,double y){ //有参构造方法初始化
this.x=x;
this.y=y;
}
public double getX(){
return x;
}
public double getY(){
return y;
}
public void showArea(){ //计算面积并显示.showArea方法的重写
area=getX()*getY();
System.out.println(area);
}
}
class Square extends Shape{ //同上
private double x;
Square(){}
Square(double x){
this.x=x;
}
public double getX(){
return x;
}
public void showArea(){
area=getX()*getX();
System.out.println(area);
}
}
class Circle extends Shape{ //同上
private double r;
Circle(){}
Circle(double r){
this.r=r;
}
public double getR(){
return r;
}
public void showArea(){
area=3.14*getR()*getR();
System.out.println(area);
}
}
public class Test3_2 {
public static void main(String args[]){
Shape re=new Rectangle(2,3); //多态产生的第3个条件.父类的引用指向子类的对象
fun(re); //抽象方法重写产生多态,运行时根据具体对象类型决定方法调用
Shape sq=new Square(2);
fun(sq);
Shape ci=new Circle(2);
fun(ci);
}
public static void fun(Shape p){
p.showArea();
}
}
这个百度上有应该有原题,我记得我学面向对象的时候就遇到过这题,建议自己写,题目不是很难,如果不会我这有java面向对象这一块的总结,比较全,要的话可以csdn 私聊我