java泛型类的定义与使用

Vic-Tory 2017-01-21 06:58:17
我在学习java泛型类时遇到了这样一个问题:定义了两个基本类圆形(Circle)、长方形(Rectangle),定义一个泛型类体积(Volume),我希望通过Volume类可以实现对底面积为圆、长方形求体积,应该怎样在Volume类中获取Circle或者Rectangle的面积呢?

package ex9.generalclass;

import java.text.DecimalFormat;

public class GeneralClass {

public static void main(String[] args) {
// TODO Auto-generated method stub
Circle c1=new Circle(3.5);
Volume<Circle> c1v=new Volume<Circle>(c1,2.5);
c1v.showVolume();
}

}
class Circle{//圆形
final double PI=3.14159;
private double radius;

public Circle(double radius){
this.radius=radius;
}
public double getArea(){
return PI*radius*radius;
}
}

class Rectangle{//长方形
private double length,width;

public Rectangle(double length,double width){
this.length=length;
this.width=width;
}
public double getArea(){
return length*width;
}
}

class Volume<E>{//体积泛型
E area;
private double height;

public Volume(E area,double height){
this.area=area;
this.height=height;
}
public void showVolume(){
DecimalFormat DF=new DecimalFormat("#.##");
System.out.println("体积为"+
DF.format(1/3*area.getArea()*height)));//这里应该怎样获取底面积?
}
}

...全文
630 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼上正解,HasArea最好写成interface
繁华终归落尽 2017-01-22
  • 打赏
  • 举报
回复

public class GeneralClass {
	public static void main(String[] args) {
        // TODO Auto-generated method stub
        Circle c1=new Circle(3.5);
        Volume<Circle> c1v=new Volume<Circle>(c1,2.5);
        c1v.showVolume();
    }
}

abstract class HasArea{
	public abstract double getArea();
}

class Circle extends HasArea{//圆形
    final double PI=3.14159;
    private double radius;
     
    public Circle(double radius){
        this.radius=radius;
    }
    
    @Override
    public double getArea(){
        return PI*radius*radius;
    }
}
 
class Rectangle extends HasArea{//长方形
    private double length,width;
     
    public Rectangle(double length,double width){
        this.length=length;
        this.width=width;
    }
    
    @Override
    public double getArea(){
        return length*width;
    }
}
 
class Volume<E extends HasArea>{//体积泛型
    E area;
    private double height;
     
    public Volume(E area,double height){
        this.area=area;
        this.height=height;
    }
    public void showVolume(){
        DecimalFormat DF=new DecimalFormat("#.##");
        System.out.println("体积为"+
        DF.format(area.getArea()*height));//这里应该怎样获取底面积?
    }
}
简单改了一下,看看是不是你需要的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧