当前位置:编程学习 > JAVA >>

刚学Java继承,有道题希望大家帮我分析一下!

题目如下:

Engine(引擎),具有power(功率,整数)属性,相对应的setter和getter方法,work()方法:输出"xx功率的发动机在运转"
Car(轿车),具有Engine属性,相对应的setter和getter方法,run()方法,在方法中判断Engine对象是否为null,选择输出"发动机发动不了"或者"xx功率的发动机在运转,汽车在跑"
Benz(奔驰),继承Car类,重写run()方法
Driver(驾驶员),具有属性name(姓名),相对应的setter和getter方法,driveCar(Benz benz)方法,在方法中输出“xxx 在开车”,并调用benz的run()方法

看得有点晕,谁可以帮我分析一下Car类。 --------------------编程问答-------------------- 就是Car是父类啊,就是后面的奔驰之类继承之后用super.run()调用父类的方法就对了啊

--------------------编程问答--------------------
引用 1 楼 gamehu520 的回复:
就是Car是父类啊,就是后面的奔驰之类继承之后用super.run()调用父类的方法就对了啊

我其实不懂的是:Car(轿车),具有Engine属性,这句话的Engine的属性到底是什么的属性? --------------------编程问答-------------------- interface Car{
void run(Engine x);
}
interface Engine{
void work(int power );
}
class Driver{
driveCar(Car car);
}
class Benz implements Car{
@override 
void run(Engine x){
}
}
--------------------编程问答--------------------
引用 2 楼 libipan2011 的回复:
引用 1 楼 gamehu520 的回复:

就是Car是父类啊,就是后面的奔驰之类继承之后用super.run()调用父类的方法就对了啊

我其实不懂的是:Car(轿车),具有Engine属性,这句话的Engine的属性到底是什么的属性?

它不仅具有power(功率,整数)属性,相对应的setter和getter方法,还具有work()方法:输出"xx功率的发动机在运转"
--------------------编程问答-------------------- Car类为父类,继承他的类拥有它的方法,还可以自己扩展父类所没有的方法和变量! --------------------编程问答-------------------- car类是父类,和Engine属性有关联关系 --------------------编程问答--------------------
引用 2 楼 libipan2011 的回复:
引用 1 楼 gamehu520 的回复:

就是Car是父类啊,就是后面的奔驰之类继承之后用super.run()调用父类的方法就对了啊

我其实不懂的是:Car(轿车),具有Engine属性,这句话的Engine的属性到底是什么的属性?


Car(轿车),具有Engine属性,这个是说Engine是car的类属性,把Engine当做一个普通的属性就可以了,但是不同的是Engine这个属性可以调用Engine类的所有属性和方法…… --------------------编程问答--------------------
public abstract class Car {
Engine engine;

public Engine getEngine() {
return engine;
}

public void setEngine(Engine engine) {
this.engine = engine;
}
public void run(){
if(engine == null){
System.out.println("发动机发动不了");
}else{
System.out.println(engine.getPower()+"功率的发动机在运转,汽车在跑");
}
}
}
--------------------编程问答-------------------- Engine类:
public class Engine {
private int power;

public int getPower() {
return power;
}

public void setPower(int power) {
this.power = power;
}
public void work(){
System.out.println("XX功率的发动机正在运转。。");
}

}
Car类:
public class Car {
private Engine engine;

public Engine getEngine() {
return engine;
}

public void setEngine(Engine engine) {
this.engine = engine;
}
public void run (){
if(engine==null){
System.out.println("发动机发动不了");
}else{
System.out.println("xx功率的发动机在运转,汽车在跑");
}
}
}

后面的没写,Car类就这样写,记住一句话:类是特殊的数据类型 --------------------编程问答-------------------- --------------------编程问答-------------------- public class Engin {
    public int power;

public int getPower() {
return power;
}

public void setPower(int power) {
this.power = power;
}
public Engin(int power){
this.power=power;
}
    public void work(){
     System.out.println(this.power+"功率的发动机在运转");
    
    }
}
public abstract class Car {
  public  Engin engin=null;
  public Engin getEngin(){
  return engin;
  }
  public void setEngin(Engin engin){
this.engin=engin;  

  }
  public Car(Engin engin){
  this.engin=engin;
  }
  public abstract void run();
 
  
}

public class BZ extends Car{
public BZ(Engin engin){
super(engin);
}
    public void run(){
     super.engin.work();
     System.out.println("奔驰牌的发动机在发动");
    }
    
   
}




public class Drive {
public String name;
public Drive(String name){
this.name=name;
}
   public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
    public void driveCar(BZ b){
     System.out.println(name+"在驾驶汽车");
     b.run();
    }
}


public class test {

/**
 * @param args
 */
public static void main(String[] args) {
Drive d=new Drive("小明");
Engin engin=new Engin(1000);
BZ b=new BZ(engin);
d.driveCar(b);

}

} --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 其实就是子类继承父类,子类拥有父类包含的属性,定义一个子类对象a,可以通过a来调用父类的public修饰的方法来使用父类的属性,比如调用get方法来得到父类也就是Car的属性
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,