java多態的一些陷阱(java多態案例)

本文目錄一覽:

java 多態里的些錯誤

一個Java文件中有且只能有一個public修飾的類

第一個錯誤:

public static void main(String[] args)所在的那個類為主類,就是用public修飾的類

第二個錯誤

public void draw(){

System.out.println(“Square.draw()”);

public void p(){

System.out.println(“here is Triangle”);

}

}

你在draw()方法中又寫了一個p()方法,這是不行的,方法可以調用方法,但不可以嵌套方法。這個應該是書寫錯誤,所以提示你非法的表達式開始

第三個:

case 0 : return new Circle();

case 1 : return new Square();

case 2 : return new Triangle();

你那個Circle類是哪裡來的?還有那個Triangle類是哪裡的,所以會提示找不到符號

第四個:

System.out.println(“here”) 這一句沒有用分號結束

第五個:

switch(rand.nextInt(3)){

default:

case 0 : return new Circle();

case 1 : return new Square();

case 2 : return new Triangle();

}

default以後什麼也沒有,在這裡就是什麼也不做.沒有break語句,所以如果產生的值是0的話,那麼下面那兩個語句也會被執行。

樓主可以參考這些改進一下自己的程序!

下面是修改以後的示例代碼,你可以自己完善一下

import java.util.*;

class Shape

{

public void draw(){}

public void p()

{

System.out.println(“here”);

}

}

class Square extends Shape

{

public void draw()

{

System.out.println(“Square.draw()”);

}

public void p()

{

System.out.println(“here is Triangle”);

}

}

class RandomShapeGenerator{

Square obj;

private Random rand = new Random(47);

public Shape next()

{

switch(rand.nextInt(3))

{

default: System.out.println(“OK”);

//case 0 : return new Circle();break;

case 1 : obj=new Square();break;

//case 2 : return new Triangle();break;

}

return obj;

}

}

public class Shapes

{

private static RandomShapeGenerator gen = new RandomShapeGenerator();

public static void main(String[] args)

{

Shape[] s = new Shape[9];

for(int i = 0;is.length;i++)

s[i] = gen.next();

for(Shape shp : s)

{

shp.draw();

shp.p();

}

}

}

Java中多態的優缺點是什麼?

多態的好處:擴展性強,父類的變量可以賦值不同的子類對象,而調用不同的子類重寫的方法

多態的弊端:不能使用子類特有的功能

這就是Java多態的優缺點了,想學習Java,自學看黑馬程序員,有視頻,有學習路線,讓你學習不迷茫!

請教 Java中多態的缺點?

多態主要體現在方法重載和方法的重寫上,一般來說,多態的出現是為了彌補之前單一的方法調用,覺得就是為了方便擴展而出現的,如果你抹掉不用,就沒有優缺點可言了。如果多態發揮的盡情的話,對於學習它或是使用它的人來說,是比較容易混淆的(因為只有開發人員才知道各個方法的具體用途),但可以減少很多冗餘代碼~~一般越高級的程序,對某一特性就發揮的越淋漓盡致!

原創文章,作者:QXOPO,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/313475.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
QXOPO的頭像QXOPO
上一篇 2025-01-07 09:43
下一篇 2025-01-07 09:43

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Python數據統計案例的實現

    Python作為一個高級編程語言,擁有着豐富的數據處理庫和工具,能夠快速、高效地進行各類數據處理和分析。本文將結合實例,從多個方面詳細闡述Python數據統計的實現。 一、數據讀取…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論