1. 程式人生 > >第二次過程性考核——面向物件程式設計

第二次過程性考核——面向物件程式設計

程式改錯題。以下程式碼存在錯誤,請修改後提交。

 1 public class Main {
 2     public static void main(String[] args) {
 3         Animal animal = new Dog();
 4         animal.shout();
 5         animal.run();
 6     }
 7 }
 8 
 9 class Animal {
10     void shout() {
11         System.out.println("animal shout!");
12     }
13 } 14 15 class Dog extends Animal { 16 void shout() { 17 super.shout(); 18 System.out.println("wangwang……"); 19 } 20 21 void run() { 22 System.out.println("Dog is running"); 23 } 24 }

輸入樣例:

輸出樣例:

animal shout!

wangwang……

Dog is running

程式設計思路:Animal是Dog的上轉型物件,即不能操作子類新增的成員變數,也不能呼叫子類新增的方法;所以需要將物件的上轉型物件再強制轉換到一個子類物件,這時,該子類物件又具備了子類所有的屬性和功能。

涉及知識點:自類的繼承,物件的上轉型物件

程式碼:

 1 public class Main {
 2     public static void main(String[] args) {
 3         Animal animal = new Dog();
 4         animal.shout();
 5         ((Dog) animal).run();
 6     }
 7 }
 8 
 9 class Animal {
10     void shout() {
11         System.out.println("animal shout!");
12 } 13 } 14 15 class Dog extends Animal { 16 void shout() { 17 super.shout(); 18 System.out.println("wangwang……"); 19 } 20 21 void run() { 22 System.out.println("Dog is running"); 23 } 24 }

執行結果:

學習內容 程式碼(行) 部落格(字)
類與物件、子類與繼承 300 1200