什么时候子类需要重写父类方法

问题描述:
我新建了一个父类,子类按照房源类别来继承。比如二手房一个子类,租房一个子类。

现在我想写一个方法查房源价格。由于在mysql里面二手房和租房的type不同,所以想查房源价格,需要知道他是二手房还是租房。

那么这个方法我应该写在父类里面,带上房源类型参数。还是分别写在两个子类里面呢?哪种更好?(除了这个房源类型参数之外,两种类别取价格的方法没有区别)

阅读 2.3k
2 个回答

不太建议使用继承,可以用一个房源接口,二手房和租房实现它,之后建立一个价格类,包含房源接口,计算价格的时候调用房源接口的计算方法,简单用代码写一下:

public interface Fangyuan{
    public void getPrice();
}

//二手房
public class Ershoufang implements Fangyuan{
    @Override
    public void getPrice(){
        // todo something
    }
}

//租房
public class Zufang implements Fangyuan{
    @Override
    public void getPrice(){
        // todo something
    }
}

public class CalcPrice{
    private Fangyuan fy;
    public void setFangyuan(Fangyuan fy){
        this.fy = fy;
    }
    public int calc(){
        return fy.getPrice();
    }
}

// 使用方法
public void main(String[] args){
    CalcPrice calcPrice = new CalcPrice();    

    // 计算二手房价格
    Fangyuan ershoufang = new Ershoufang();
    calcPrice.setFangyuan(ershoufang);
    calcPrice.getPrice();
    
    // 计算租房价格
    Fangyuan zufang = new Zufang();
    calcPrice.setFangyuan(zufang);
    calcPrice.getPrice();
}

这样设计的话,不管之后怎么加房源,都可以用一个CalcPrice去计算。
命名不规范,可以忽略~~~

先说把,我也是做房产项目的。我觉得你这个不对,查询价格的方法应该单独出来。

// PriceDao.java
public BigDecimal queryPrice(type,houseid) {
    // 你的逻辑
    return price;
}

至于你二手房还是出租房的房屋价格,说实在的[ 也许 ]你可以放在你price的getter方法里面

Class 二手房{
    private BigDecimal price;
    
    public BigDecimal getPrice() {
        return PriceDao.queryPrice(二手房,100001);
    }
}

但是实际上这种方法不好,你在一个对象里面不应该包含逻辑代码,最多包含一些属性和getter、setter方法,至于价格,你完全可以在获取这套房源的时候调用PriceDao.queryPrice(二手房,100001);然后通过setter方法设置进去。

我的问题
请问难道不能直接一条sql把价格直接和房源一起查出来么?为什么要先查房源再去查价格啊!!!left join 价格表一次就带出来了,实在有需求说不能一次带出来,那么上面的方法你可以参考。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题