1. 程式人生 > >java練習5

java練習5

第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);
	}
}