日期:2014-05-20  浏览次数:20815 次

在线等!新手恳求大家帮个忙。
求java中几个继承与多态实例,并要有相应的题目!给我参考和练习下,本人新手,不宜难的

------解决方案--------------------
你不如自己Google,给你粘贴两道:

1。已有一个交通工具类Vehicle,其中属性包括:速度Speed、类别Kind、颜色Color;方法包括设置速度、设置颜色、取的类别、取的颜色。设计一个小车类Car,继承自Vehicle。Car中增加了属性:座位数passenger,增加了设置和获取座位数的方法,创建Car的对象,为其设置新速度和颜色,并显示其状态(所有属性)。

2。设计一个圆类Circle,具有属性:圆心坐标x和y及圆半径r,除具有设置及获取属性的方法外,还具有计算周长的方法Perimeter()和计算面积的方法area()。再设计一个圆柱体类Cylinder,Cylinder继承自Circle,增加了属性:高度h,增加了设置和获取h的方法、计算表面积的方法Perimeter()和计算体积的方法volume()。创建Cylinder的类对象,显示其所有属性,计算并显示其表面积和体积。
------解决方案--------------------
子类的派生与方法覆盖
Java code
//Inheritance.java
class Telephone {
    String brand,number;
    double dialledTime;
    double rate;
    
    Telephone(String b, String n) {  //构造方法
        brand = b;
        number = n;    
    }    
    
    String getBrand() { return brand; }
    String getNumber() { return number; }
    double getDialledTime() { return dialledTime; }
    double getRate() { return rate; }
    
    void setBrand(String b) { brand = b; }
    void setNumber(String n) { number = n; }
    void setDialledTime(double d) { dialledTime = d; }
    void setRate(double r) { rate = r; }
    
    double callCost() {
        return rate*dialledTime;    
    }
    
    void display() {
        System.out.println("电话品牌:"+brand+"  电话号码:"+number);
        System.out.println("通话时间:"+dialledTime+"  费率:"+rate);
        System.out.println("话费:"+callCost());    
    }
}

class Mobilephone extends Telephone {
    String network;
    double receivedTime;
    
    Mobilephone(String b, String num, String net) {
        super(b,num); //显式的调用超类的有参构造函数
        network = net;
    }    
    
    String getNetwork() { return network; }
    double getReceivedTime() { return receivedTime; }
    
    void setNetwork(String n) {
        network = n;    
    }
    
    void setReceivedTime(double d) {
        receivedTime = d;        
    }
    
    double callCost() { 
        return (dialledTime+0.5*receivedTime)*rate;
    }
    //方法重写
    void display() {
        System.out.println("电话品牌:"+getBrand()+"  电话号码:"+getNumber()+"  网络:"+getNetwork());
        System.out.println("主叫时间:"+getDialledTime()+"  被叫时间:"+getReceivedTime()+"  费率:"+getRate());
        System.out.println("话费:"+callCost());    
    }
}

public class Inheritance {
    public static void main(String args[]) {
        Telephone    tel = new Telephone("TCL","123456789");
        Mobilephone mobile = new Mobilephone("Nokia","15019905753","CDMA");
        
        tel.setRate(0.2);
        tel.setDialledTime(150);
        
        mobile.setRate(0.39);
        mobile.setDialledTime(80);
        mobile.setReceivedTime(120);
        
        tel.display();
        System.out.println();
        mobile.display();        
    }
}