[英]Java Inheritance subclass and superclass
我在網上發現了這些問題(滑鐵盧大學考試學習問題https://www.student.cs.uwaterloo.ca/~cs125/S08/Resources/Exams/StudyQuestions/W07ExamReview/inheritance_questions.txt )但是他們的帖子沒有任何答案所以我只想知道我是否正確。
假設名為SportsCar的類是名為Automobile的類的子類。 假設汽車類具有名為speed,manufacturer和numberOfCylinders的實例變量。 SportsCar類的對象是否有名為speed,manufacture和numberOfCylinders的實例變量?
假設名為SportsCar的類是名為Automobile的類的子類,並假設類Automobile具有名為accele和addGas的公共方法。 SportsCar類的對象是否有名為accele和addGas的方法? 如果是這樣,這些方法是否必須在類SportsCar中執行與在Automobile類中完全相同的操作?
是的,因為子類繼承了所有超類方法和變量
class SportsCar會有方法addGas,但它不會執行與'Automobile類中的方法'完全相同的'動作。
先感謝您!
通常不會因為它沒有指定評估修飾符,所以這意味着如果速度是私有的,那么SportCar將不具有該屬性
SportCar的對象將具有addGas並將執行與Automobile類的實例相同的操作,除非在SportCar中未覆蓋公共方法addGas
1)除非實例變量是私有的,否則更正
2)跑車可以覆蓋的方法,所以它不會需要做的一模一樣。 SportsCar甚至可以根據方法的參數數量和類型重載addGas以執行不同的操作。
1.這取決於實施。 如果訪問修飾符是私有的,則子類(SportsCar)將不會“訪問”它們,但這並不意味着它們不存在。 例如,SportsCar可以通過構造函數更改這些值,如下所示。
public class Automobile {
private int speed;
private int manufacture;
private int numberOfCylinders;
public Automobile(int speed, int manufacture, int numberOfCylinders) {
this.speed = speed;
this.manufacture = manufacture;
this.numberOfCylinders = numberOfCylinders;
}
}
盡管Sportscar不能直接訪問它們,但它仍然可以根據汽車的實施來修改值。
public class SportsCar extends Automobile {
public SportsCar() {
super(5, 10, 20);
}
}
是的,它會覆蓋它們。 但這又取決於汽車中那些方法的訪問修飾符。
public class Automobile {
public void addGas(){
//adding gas
}
}
public class SportsCar extends Automobile {
@Override
public void addGas() {
// Do Something else
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.