java練習5
阿新 • • 發佈:2018-12-18
第10/11章
1.建立一個父類,在父類中建立兩個方法,在子類中覆蓋第二個方法,為子類建立一個物件,將它向上轉型到基類並呼叫這個方法。
class Fruit{
private String name;
private double weight;
public Fruit(String name,double weight) {
this.name=name;
this.weight=weight;
}//建構函式
public void showname() {
System.out.println(this.name);
}
public void showweight() {
System.out.println(this.weight);
}
}
class apple extends Fruit{
public apple(String name, double weight) {
super(name, weight);
// TODO Auto-generated constructor stub
}
public void showweight() {
//this.showweight();
System.out.println("這是蘋果");
}
}
public class exercise {
public static void main(String[] args) {
//apple fr1=new apple("hongpinguo",5);
//Fruit fr2=(Fruit) fr1;
//Fruit fr2=new Fruit("ningmeng",6);
Fruit fr2=new apple("hongpinguo",5);//向上轉型
fr2.showname();
fr2.showweight();
}
}
2.嘗試建立一個子類和父類,分別建立構造方法,然後向父類和子類新增成員變數和方法,並總結構建子類物件時的順序。
public abstract class UseCase1 {
abstract void testAbstract();
UseCase1(){//(1)首先執行父類構造方法
System.out.println("before testAbstract()");
testAbstract();//如果呼叫了抽象方法,呼叫子類覆蓋的方法。這裡呼叫Atest類的testAbstract()方法
System.out.println("after testAbstarcat()");
}
public static void main(String args[]){
new Atest();
}
}
class Atest extends UseCase1{
private int i=1;//(2)使成員變數進行初始化
void testAbstract(){
System.out.println("testAbstract()"+i);
}
public Atest(){//(3)呼叫子類構造方法
System.out.println(i);
}
}