目前正在学习Java,我有一个关于从抽象类中创建子类的问题。我有这个:
public abstract class Bike
{
private int cost;
public Bike(){}
public abstract void displayCost();
}
public class SportsBike extends Bike
{
private int topSpeed();
???
}
public class CasualBike extends Bike
{
private int brakeSpeed();
???
}
public void main()
{
SportsBike b1 = new SportsBike(???);
CasualBike b2 = new CasualBike(???);
}
我将如何为sportsBike和CasualBike构造函数,以便他们拥有自己的信息?我已经读过有关@super之类的东西,但是我不确定如何实现它。如果我有多个继承一个类的类,@ override是否可以工作?
最佳答案
这是一个简单的示例,您可以四处查看以了解构造函数的工作原理,以及即使未显式调用超类构造函数也将自动调用它们:
public class Parent {
protected int parentVariable;
public Parent(){
parentVariable=1;
System.out.println("parent no-argument constructor");
}
public Parent(int value) {
System.out.println("parent int constructor");
parentVariable = value;
}
public int getParentVariable() {
return parentVariable;
}
}
public class Child extends Parent {
private int childVariable;
public Child() {
// Call super() is automatically inserted by compiler
System.out.println("child no-argument constructor");
childVariable = 99;
}
public Child(int value, int childValue){
// Explicit call to parent constructor
super(value);
System.out.println("child int constructor");
childVariable = childValue;
}
public int getChildVariable() {
return childVariable;
}
}
public class Driver {
public static void main(String[] args)
{
Child c1 = new Child();
Child c2 = new Child(3,199);
System.out.println(c1.getParentVariable());
System.out.println(c2.getParentVariable());
System.out.println(c1.getChildVariable());
System.out.println(c2.getChildVariable());
}
}