當前位置:首頁 » 編程軟體 » java向上造型編譯器怎麼做的

java向上造型編譯器怎麼做的

發布時間: 2022-02-14 06:26:30

1. java中 向上造型是什麼概念是向上轉型么 什麼情況下用

class A {}
class B {} extend A

B b1 = new B();
A a1 = new B();

b1 = a1;
這被稱作向上造型。

2. java向上造型的意義

那個你做的例子都有誤導性的,你用Person來試試,Person裡面有一個方法:eat(),你分別聲明三個類:man,woman,notmannotwoman來繼承這個類,並復寫裡面的方法,好了,現在我要在測試類裡面寫一個方法,只傳進一個參數,可以調用三個對象的復寫的eat(),你該怎麼辦? 現在,向上轉型就出來了,太他媽的聰明了,你myMethod(Person obj){ obj.eat()}, 你分別傳進三個對象:man,woman,notmannotwoan的,好了,你猜對了,調用的都是復寫之後的,各個類裡面的方法

3. java向上造型

正確的有 P0=P1 P0=P2 P4=P2 只要創建對象沒錯 就直接看引用,誰是爸爸誰在左邊等著兒子賦值就行了。

4. JAVA常用編譯器,教程

編譯器當然是 eclipse~~
http://www.eclipse.org/downloads/
再加上 Myeclipse
http://www.myeclipseide.com/Downloads%2Bindex-req-viewsdownload-sid-15.html

教程已經發到你郵箱了!
其實最好的教程就是多寫代碼!多出錯,自然以後知道的就更多!

5. java語言編譯器是怎樣編寫的,源代碼是什麼

編譯器本身就是一個應用程序,編譯器涉及到底層的一些操作,對執行要求比較高的地方使用匯編語言編寫的,主要的還是用C語言來編寫實現的,在Java的安裝路徑下的bin目錄下有很多的*.exe可執行文件,像jar.exe、javac.exe、java.exe等等,Java編譯器這東西它好像不是開源的,如果你對編譯器的實現感興趣的話,推薦你看一本《編譯原理》這本書,這本書對你了解編譯器的實現原理有很大的幫助的。

6. java向上造型有什麼作用為什麼要造型,有什麼效果

向上造型:父類的引用指向子類的對象。
向上造型可以大大提高程序的可擴展性。利於代碼維護。
面向對象的三大特性:封裝;繼承;多態。向上造型可以看做多態的一種體現。即允許一種類型有不同的實現(可以理解為事物存在的多種體現形態)。
典型應用:介面。
沒有什麼效果,只是是代碼精簡而已

7. 我想用JAVA做個簡易編譯器,說說思路,或者有沒有現成的代碼JAVAC的代碼有嗎

要寫編譯器?自己開發語言?很牛X,先贊一個!
自己寫編譯器,原理其實不難,就那麼點東西。找一個編譯原理看明白就OK了,詞法、語法、語義、語境。
這些東西用一些自動機,圖靈機,範式,正規之類的就可以搞定。分析嘛,什麼逆波蘭,樹形,一共也沒幾種的。
但最難做的是優化,還有機器代碼生成這二部分。
優化怎麼做?你的中間代碼放哪?先優化還是先生成中間代碼?
機器代碼怎麼搞?用匯編?還是直接和機器特性相關?
反正這二點我是暈,雖然原理還是那點東西,但真搞起來,我一點思路都沒有。。。
國內寫編譯器的有,但都不是很牛X。
想要寫好,還得多看E文資料。
加油吧。

8. java中,向上造型,必須要實現介面嗎

介面(interface )

如果一個抽象類中的所有方法都是抽象的,就可以將這個類用另外一種方式來定義,也就是介面定義。
介面是抽象方法和常量值的定義的集合,從本質上講,介面是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變數和方法的實現
可以使用extends來繼承介面的常量和抽象方法,但它與類中的extends不同,它可以繼承有多個父介面(多重繼承),各父介面間用逗號隔開。
介面中的所有常量必須是public static final,方法必須是public abstract,這是系統默認的,不管你在定義介面時,寫不寫修飾符都是一樣的
定義介面
修飾符 interface 介面名 [extends 父介面列表]
{
常量域聲明
抽象方法聲明
}
class cat implements Animal
{
public void shout ()
{
int(「喵喵」);
}
}
實現介面
implements
一個類可以實現若干個介面
非抽象類必須實現所有的抽象方法
interface prt
{
public void prtln();
}
class A implements prt{
int a = 3;
public void prtln()
{
//輸出a;
}
}
class B implements prt{
int b = 4;
public void prtln()
{
//輸出b;
}
}
public class MyInterfaceDemo
{
public static void dost(prt c)
{
tln();
}
public static void main(String[] args)
{
A a1 = new A();
B b1 = new B();
st(a1);
st(b1);
}
}

9. 用java做一個java的編譯器

Javac編譯器讀取Java源代碼,並將其編譯成位元組代碼,說的直白一點就是把java語言翻譯成計算機可以識別的二進制代碼。
java的編譯器有很多種,有sun公司的jdk,有oracle的jdk,還有其他一些公司的,多採用sun公司的jdk。
java同時需要集成開發環境,它集成了java的編譯器,讓我們不必通過命令行來編譯java類文件,通過它我們可以快速的開發我們需要的程序。目前用的比較多的集成開發環境有eclipse和myeclipse,eclipse有很多具有針對性的版本來應對不同的開發,而myeclipse則是相對來說功能比較全面,當然也需要購買,個人建議myeclipse。

10. java裡面的向上造型是什麼_抽象類和介面有什麼關系c++裡面的虛函數是java裡面的介面

向上造型一個泛型對象的引用

例如,假設我們有很多箱子,每個箱子里都裝有不同的水果,我們需要找到一種方法能夠通用的處理任何一箱水果。更通俗的說法,A是B的子類型,我們需要找到一種方法能夠將C<A>類型的實例賦給一個C<B>類型的聲明。

為了完成這種操作,我們需要使用帶有通配符的擴展聲明,就像下面的例子里那樣:

List<Apple>apples=newArrayList<Apple>();

List<?extendsFruit>fruits=apples;

「? extends」是泛型類型的子類型相關性成為現實:Apple是Fruit的子類型,List<Apple> 是 List<? extends Fruit> 的子類型。



JAVA中抽象類與介面是java語言中對抽象概念進行定義的兩種機制。

  1. 我們都知道在面向對象的領域一切都是對象,同時所有的對象都是通過類來描述的,但是並不是所有的類都是來描述對象的。如果一個類沒有足夠的信息來描述一個具體的對象,而需要其他具體的類來支撐它,那麼這樣的類我們稱它為抽象類。比如new Animal(),我們都知道這個是產生一個動物Animal對象,但是這個Animal具體長成什麼樣子我們並不知道,它沒有一個具體動物的概念,所以他就是一個抽象類,需要一個具體的動物,如狗、貓來對它進行特定的描述,我們才知道它長成啥樣。

  2. 介面是一種比抽象類更加抽象的「類」。這里給「類」加引號是我找不到更好的詞來表示,但是我們要明確一點就是,介面本身就不是類。 介面是用來建立類與類之間的協議,它所提供的只是一種形式,而沒有具體的實現。同時實現該介面的實現類必須要實現該介面的所有方法,通過使用implements關鍵字,他表示該類在遵循某個或某組特定的介面,同時也表示著「interface只是它的外貌,但是現在需要聲明它是如何工作的」。

區別如下:

  1. 在語法層次,java語言對於抽象類和介面分別給出了不同的定義。

  2. 抽象層次不同。抽象類是對類抽象,而介面是對行為的抽象。抽象類是對整個類整體進行抽象,包括屬性、行為,但是介面卻是對類局部(行為)進行抽象。

  3. 跨域不同。抽象類所跨域的是具有相似特點的類,而介面卻可以跨域不同的類。

  4. 設計層次不同。對於抽象類而言,它是自下而上來設計的,我們要先知道子類才能抽象出父類,而介面則不同,它根本就不需要知道子類的存在,只需要定義一個規則即可。


C++的虛函數和JAVA的interface

  • Java中的interface實現了函數多態性,並且實現了完全抽象的類。在這里還要提一下引用。因為interface實現了完全抽象的類,在介面中定義的方法完全看不到任何實現,而且也不能有任何的實現,介面中聲明的類必須在引用其的類中實現。而多態性的實現正是通過不同引用中的不同的方法實現。

  • C++中的虛函數也和Java中介面類似,C++中的虛函數同樣是將介面和實現分離,從而實現多態性。為了使用多態性,需要在基類中使用virtual來聲明虛函數。所以,虛函數是在基類中定義,在其子類中重寫實現,也可重寫基類的函數。在使用虛函數的的時候,需要定義基類的指針來使用虛函數,否則就失去了虛函數的意義。

  • 其實兩者都是為了實現多態性而存在,都需要通過繼承來實現,只是Java中稱為引用,與C++中的繼承也是大同小異。

熱點內容
存儲卡交流 發布:2025-01-13 07:16:06 瀏覽:982
php字元串浮點數 發布:2025-01-13 07:15:28 瀏覽:997
python排序cmp 發布:2025-01-13 07:09:04 瀏覽:71
雲腳本精靈 發布:2025-01-13 07:03:27 瀏覽:617
高維訪問 發布:2025-01-13 07:03:23 瀏覽:974
保衛蘿卜有腳本嗎 發布:2025-01-13 06:30:29 瀏覽:741
天貓上傳 發布:2025-01-13 06:06:35 瀏覽:156
php處理並發 發布:2025-01-13 06:03:44 瀏覽:282
安卓傳文件的軟體哪個最好 發布:2025-01-13 06:03:07 瀏覽:885
電腦伺服器可以做嗎 發布:2025-01-13 05:59:49 瀏覽:846