java面試題目_第1頁
java面試題目_第2頁
java面試題目_第3頁
java面試題目_第4頁
java面試題目_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、面 向 對 象 的 軟件 開 發(fā)有 哪 些 優(yōu) 點 ?面向對象設計是一種把面向對象的思想應用于軟件開發(fā)過程中,指導開發(fā)活動的系統(tǒng)方法, 是建立在 對象”概念基礎上的方法學。所謂面向對象就是基于對象概念,以對象為中心,以 類和繼承為構造機制,來認識、理解、刻畫客觀世界和設計、構建相應的軟件系統(tǒng)。從面向過程到面向對象是程序設計技術的一個飛躍。人們之所以要采用面向對象的程序設計技術,其目的在于:按照與人類習慣思維方法一致的原則開發(fā)系統(tǒng);提高代碼的可重用性(或者稱為復用性);提升程序的開發(fā)與運行效率;提高程序的可靠性與可維護性;提高程序的 可擴展性;增強程序的可控制性??傊?,面向對象的程序設計,能夠有

2、效分解、降低問題的 難度與復雜性,提高整個求解過程的可控制性、可監(jiān)視性和可維護性, 從而獲得較高的開發(fā)效率與可靠效果。2.什么叫對象?什么叫類?類和對象有什么關系。(數(shù)據(jù))和行為(方對象(Object)是一個應用系統(tǒng)中用來描述客觀事物的實體,是具有特定屬性萬物皆對象。對法)的基本運行單位,是類的一個特定狀態(tài)下的實例。對象是一件事、一個實體、一個名詞、 一個可以想象為有自己的標識的任何東西。對象是類的實例化。概括來說: 象具有狀態(tài),一個對象用數(shù)據(jù)值來描述它的狀態(tài)。類(Class)是Java代碼的基本組織模塊,是用以描述一組具有共同屬性和行為的對象的基本 原型,是對這組對象的概括、歸納與抽象表達。

3、類是對象的模板,它定義了本類對象所應擁有的狀態(tài)屬性集及操作這組屬性的行為方法集。是對一組有相同數(shù)據(jù)和相同操作的對象的定義,一個類所包含的方法和數(shù)據(jù)描述一組對象的共同屬性和行為。類和對象之間的關系是抽象和具體的關系:類就是一種模板,表達的是一種抽象的概念,它描述了該類對象的共同特征,類是在對象之上的抽象,對象則是類的具體化,是類的實例。對象是模板的實例化,是個性的產物,是一個具體的個體;類必須通過對象才能使用,而對象中的屬性和行為都必須在類中定義;類由屬性和行為(方法)組成。3.什么是包?把一個類放在包里有什么作用?Java中的包(Package)是一種松散的類的集合,是用來組織與管理類與接口的

4、容器。包的作 用主要是把需要協(xié)同工作的不同的類組織在一起,使得程序功能清楚、結構分明。4.作用域Public、private、protected以及不寫時(default)有什么區(qū)別?當用一個類創(chuàng)建了一個對象之后,該對象可以通過“ 運算符訪問自己的變量,并使用類中的方法。但訪問自己的變量和使用類中的方法是有一定限制的。通過修飾符private、default、protected和public來說明類成員的使用權限。private (私有的):類中限定為 private的成員只能在這個類中被訪問,在類外不可見。default(無修飾符,缺省的):如果沒有訪問控制符,則該類成員可以被該類所在包中的

5、所有其它類訪問。protected(受保護的):用該關鍵字修飾的類成員可以被同一類、被該類所在包中的所有其它類或其子類(可以不在同一包中)的實例對象訪問。public :用public修飾的類成員可以被其他任何類訪問,前提是對類成員所在的類有訪問權限。類成員訪問控制符與訪問能力之間的關系 同一個類同一個包不同包的子類不同包非子類P rivate * default * * p rotected * * * public * * * *5. 什么是方法?方法的結構是怎樣的?設計方法應考慮哪些因素?方法是Java類的一個組成部分,通過類的方法改變對象的狀態(tài)。方法的結構:方法修飾符返回值類型方法名(

6、形參列表)throws異常列表方法體;設計方法應考慮因素有:(1) 方法名是Java中任意的標識符,按照命名的約定,方法名應該是有意義的動詞或動詞短語,它的第一個字母一般要小寫,其他有意義的單詞的首字母要大寫,其余字母小寫。(2)返回值類型可以是任意的Java類型,甚至可以是定義此方法的類。如果方法沒有返回值,則用void表示。(3) 形式參數(shù)列表是可選的。如果方法沒有形式參數(shù),就用一對小括號“()表示。形式參數(shù)列表的形式如下:(類型形參名,類型形參名,) throws異常列表規(guī)定了在方法執(zhí)行中可能導致的異常。6. 什么是方法的覆蓋?與方法的重載有何不同?方法的覆蓋與屬性的隱藏有何不同?子類重

7、新定義父類中已經存在的方法,稱為方法的覆蓋。 方法重載指一個類中有多個方法享有相同的名字, 但是這些方法的參數(shù)必須不同,或者是參 數(shù)的個數(shù)不同,或者是參數(shù)類型不同。 返回類型不能用來區(qū)分重載的方法。 其實方法重載的 最主要的作用就是實現(xiàn)同名的構造方法可以接受不同的參數(shù)。參數(shù)類型的區(qū)分度一定要足夠,例如不能是同一簡單類型的參數(shù),如 int與long。方法的重載不是子類對父類同名方法 的重新定義,而是在一個類中定義了同名的不同方法。方法覆蓋與屬性的隱藏不同:子類重新定義父類已有的域,并不能完全取代它從父類那里繼 承的同名的域,這個域仍然占用子類的內存空間,在某些情況下會被使用; 而當子類重新定義父

8、類的方法時,從父類那里繼承來的方法將被新方法完全取代,不再在子類的內存空間中占一席之地。7. 什么是成員變量、局部變量、類變量和實例變量?在方法外但在類聲明內定義的變量叫成員變量,作用域是整個類。在方法體中定義的變量和方法的參數(shù)被稱為局部變量。static聲明的變量。成員變量在整類的成員變量分為類變量和實例變量,類變量是用關鍵字 個類內都有效,局部變量只在定義它的方法內有效。他們的生存期分別是: 局部變量在定義該變量的方法被調用時被創(chuàng)建,而在該方法退出后被撤銷;實例變量在創(chuàng)建該類的實例時被創(chuàng)建,而其生存期和該類的實例對象的生存期相同; 類變量在該類被加載時被創(chuàng)建,所有該類的實例對象共享該類變量

9、,其生存期是類的生存期。任何變量在使用前都必須初始化,但是需要指出的是局部變量必須顯式初始化,而實例變量不必,原始類型的實例變量在該類的構造方法被調用時為它分配的缺省的值,整型是0,布爾型是false,而浮點型是0.0f,引用類型(類類型)的實例變量的缺省值是null,類變量的規(guī)則和實例變量一樣,不同的是類變量的初始化是在類被加載時。&什么是繼承?什么是父類?什么是子類?繼承的特性可給面向對象編程帶來什么好處?繼承(Inheritanee):繼承是指從已有的類中派生出若干個新類,是子類自動共享父類之間數(shù) 據(jù)和方法的機制。已有類稱為基類或父類,新類稱為派生類或子類; 子類將自動地獲得基類的屬性與

10、方法,從而不需再重復定義這些屬性與方法;當然子類還可以修改父類的方法或增加新的方法,從而使自己更適合特殊的需要。類之間的繼承關系是現(xiàn)實世界中遺傳關系的直 接模擬。如果沒繼承性機制,則類對象中數(shù)據(jù)、方法就會出現(xiàn)大量重復。繼承不僅支持系統(tǒng)的可重用 性,而且還促進系統(tǒng)的可擴充性。繼承是子對象可以繼承父對象的屬性和行為,亦即父對象擁有的屬性和行為,其子對象也就擁有了這些屬性和行為。這非常類似大自然中的物種遺傳。9什么是多態(tài)?面向對象程序設計為什么要引入多態(tài)的特性?多態(tài)性:是指不同類的對象收到相同的消息時,得到不同的結果。即允許不同類的對象對同一消息作出各自的響應,以統(tǒng)一的風格處理已存在的數(shù)據(jù)及相關的操

11、作。即多態(tài)性語言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢,較好地解決了應用程序中方法同名的問題。多態(tài)的特點大大提高了程序的抽象程度和簡潔性,更重要的是它最大限度地降低了類和程序模塊之間的耦合性, 提高了類模塊的封閉性,使得它們不需了解對方的具體細節(jié), 就可以很好地共同工作。這對程序的設計、開發(fā)和維護都有很大的好處。”,這種說法是否正確?為10.子類的域和方法的數(shù)目一定大于等于父類的域和方法的數(shù)目 什么?N個私有域和方法而只有這時子類這樣說是不對的,因為父類的私有方法不能被繼承。如果父類有一個非私有的域或方法時,跟據(jù)繼承的原則子類只能擁有父類的非私有域和方法。 的域和方法就要小于父類了。11.父

12、類對象與子類對象相互轉化的條件是什么?如何實現(xiàn)它們的相互轉化?即一個父類對象的引用,在這種情況下,可以使用強制類型轉換,其指向的內存將父類對象的一個子類對象也可以被合法地視為一個父類的對象, 單元可能實際上是一個子類的對象。引用轉換成實際的子類對象的引用。12.以下代碼共創(chuàng)建了幾個對象:2Stri ngs1=newStri ng(Stri ngs2=newStri ng(Stri ngs3=s1;Stri ngs4=s2;“hello ”“hello ”););14.對于以下程序,運行javOMystery Mighty Mouse,得到的結果:MouseMightyp ublicclassT

13、est staticintmyArg =1;p ublicstaticvoidmain( Stri ngargs) intmyArg;System.out. pnntln(m yArg);13.分析以下代碼,象:The local variable myArg may not have bee n in itialized編譯時出現(xiàn)什么現(xiàn)p ublic classMystery p ublic staticvoidmain( Stri ngargs) Changer cnew Changer();c.method(args);System.out .pnntln( args0”+ args1)

14、;staticclassChangervoidmethod(Stri ngs) Stri ngtemp =:s0;s0=s1;s1=temp;15.閱讀下列程序,,寫出輸出的結果:classXxx privateint i;Xxx x;publicXxx()i =10;x =null;i = 100 i = 10 i = 10p ublicXxx(i nti) this.ii;new Xxx();P ublic voidprint。System.out .prin tl n(” . +i);System.out .prin tl n( x);publicStri ngtoStri ng()re

15、turnpublicclassTestpublicstaticvoidmain( Stri ngargs) Xxx xnewXxx(100);” . + i;x.prin t();System.out. pnntln( x.x);16.為了使以下Java應用程序輸出11、10、9,應在(*)處插入的語句是:ia=(int)xa+1;如果要求輸出10、9、8,則在(* )處插入的語句應是:ia=(int)xa;publicclassGetItpublicstaticvoidmain( Stri ngargs)doublex=10.2,9.1,8.7;int i=new int3;for(i nt

16、a =0;a(x.le ngth);a+)(* )System.out. println (ia);17.閱讀下列程序,分析程序的輸出結果:My funcabstract classBaseabstractp ublicvoid myfun c();p ublicvoidano ther()System.out.println(“Anothermethod);publicclass Abs exte ndsBasepublicstatic voidmain (Stri ngargv)Abs anew Abs();a.amethod();p ublicvoid myfunc()System.ou

17、t.pnntln(“My func ” );p ublicvoid amethod()myfun c();18.分析以下代碼,編譯時會出現(xiàn)的錯誤信息是Test.java:6:secret可以在A中訪問private(returna.secret+;出錯)classAp rivateintsecret;publicclassTestpublicintmethod(Aa)returna.secret+;publicstatic voidmain( Stri ngargs)Testtest =newTest();A a=new A();System.out. prin tl n( test.meth

18、od(a);19、分析以下程序,寫出運行結果:1234publicclassTest19publicstaticvoidcha ngeStr(Stri ngstr)str= ”welcomep ublicstaticvoidmain( Stri ngargs) Stri ngstr= ”1234cha ngeStr(str);System.out .pnntln( str);20、分析以下程序,寫出運行結果 :ABDCBDCBP ublicclass Test20 static boolea n foo(char c) System.out .prin t(c);return true;arg

19、s) p ublic static voidmain( Stri ngint i2;for (foo( A ); foo( B)& (i 4); foo( C ) i+; foo( D );21.編寫程序,要求創(chuàng)建一個Dog類,添加name,eyeColor屬性,為該屬性自動添加相應的set和get方法,并給出至少兩個構造方法。publicclass Dog p rivateString n ame, eyeColor;/ 無形參的構造方法public Dog () = ”逗逗“;this. eyeColor/ 有形參的構造方法publicDog(Stri ngn ame,

20、String eyeColor )this.n ame = n ame;this.eyeColoreyeColor;publicStri nggetEyeColor()returneyeColor;publicvoidsetEyeColor(Stri ngeyeColor) this.eyeColoreyeColor;publicStri nggetNameO returnn ame;publicvoidsetName(Stri ngn ame)this. namen ame;22.統(tǒng)計一個字符串中出現(xiàn)某個字母的次數(shù)(注意區(qū)分大小寫)。String類中的相關方法(具體用法請查看JDK幫助文檔)

21、:length():計算字符串長度,得到一個int型數(shù)值;indexOf():在字符串中定位某個子串,并返回位置編號substri ng(equals():Stri ngstrStri ngchrint countfor (inti):截取字符串中的一部分,并作為一個新字符串返回;比較兩個String內容是否完全相同?!?abckajbfhbbkhfgabkbjkdfasjkbdanjkasfbai ” b”0;0; i str.le ngth();i+)if(chr.equals(str.charAt(i)coun t+;+ coun t);System.out .prin tl n(“ T

22、hecount is ”23.創(chuàng)建一個桌子(Table)類,該類中有桌子名稱、重量、桌面寬度、長度和桌子高度屬性, 以及以下幾個方法:(1)構造方法:初始化所有成員變量。area():計算桌面的面積。display():在屏幕上輸出所有成員變量的值。changeWeight(intw):改變桌子重量。在測試類的main()方法中實現(xiàn)創(chuàng)建一個桌子對象,計算桌面的面積,改變桌子重量,并在屏幕上輸出所有桌子屬性的值。Packagecom.test;publicclass Table Stri ngname;/ 名稱doubleweight;/重量doublewidth;/doubleIon gth;

23、/doubleheight;/構造方法p ublicTable(Stri ngn ame, double weight, double width, doubleIon gth, double height) sup er();this. namen ame;this.weightweight;this.widthwidth;this.l on gthIon gth;this.heightheight;/計算桌面的面積p ublic void area()System.out .prin tl n(桌子面積是+lo ngth*width);/ 在屏幕上輸出所有數(shù)據(jù)成員的值p ublic voi

24、ddis play()System.out.println(桌子名稱:”長:” +longth+n 高:” +height);+name+ n” + 重量:” +weight+n” + 寬:” +width+n” +”/改變桌子重量的方法p ublicvoid cha ngeWeight(i nti)this.weight=i;System.out. println(面積改為“ +this.weight);p ublic static voidmain( Stri ngargs) Table table=new Table( “紅木桌 “ ,100.5,3.2,2.3,1.5);“);Syst

25、em.out .prin tl n(創(chuàng)建一個桌子對象,屬性如下table.dis play();table.area();table.cha ngeWeight(IOO);System.out .prin tl n(“更改重量后,屬性如下“);table.dis play();24.編寫一個程序, 的加法運算。試將在主類中創(chuàng)建和調用方法 sumf(),方法sumf()的功能是進行兩個浮點數(shù) 12.7和23.4兩個數(shù)相加并顯示運算結果。imp ortjava.util.Sca nner;publicclasstest staticfloatsumf(float x,float y) return

26、x+y;publicstaticvoidmain( Stri ngargs)Scannerscnew Scanner(System.in);System.out .prin tl n(“輸入 2個浮點數(shù)求和表達式,如:23.4+67.01 );Stri ngstrsc.n ext().s plit(“+”);floatfloatm =Float. parseFloat(str0);Float. parseFloat(str1);System.out. prin tl n(m+” +” +n+” =”+sumf( m,n);習題51接口與抽象類有哪些異同點?在面向對象的概念中,我們知道所有的對象

27、都是通過類來描繪的,但是反過來卻不是這樣。 并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。 抽象類往往用來表征我們在對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同, 但是本質上相同的具體概念的抽象。正是因為抽象的概念在問題領域沒有對應的具體概念,所以用以表征抽象概念的抽象類是不能夠實例化的。接口與抽象類的主要異同點如下:(1) 接口定義了一組特定功能的對外接口與規(guī)范,而并不真正實現(xiàn)這種功能,功能的實現(xiàn) 留待給實現(xiàn)這一接口的各個類來完成。抽象類一般作為公共的父類為子類的擴展提供基礎, 這里的擴展包括了屬性上和行為上的。而

28、接口一般來說不考慮屬性,只考慮方法,使得子類可以自由的填補或者擴展接口所定義的方法。抽象類表示的是“ isa”關系,接口著重表示的是“ caEo”關系。承。接口是抽象方法和常量值的定義的集合,從本質上講,接口是一種只包含常量與抽象abstract class 在 Java語言中表示的是一種繼承關系,一個類只能使用一次繼 但是,一個類卻可以實現(xiàn)多個in terface,接口可以解決多重繼承問題。方法的特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實現(xiàn)。接口里面不能有私有的方法或變量,是用于讓別人使用的,接口中的所有常量必須是public static final,且必須給其

29、初值,其實現(xiàn)類中不能重新定義,也不能改變其值。接口中的 方法必須是public abstract,這是系統(tǒng)默認的,不管你在定義接口時,寫不寫修飾符都是一 樣的。抽象類中是可以有私有方法或私有變量的,抽象類中的變量默認是friendiy型,其值可以在子類中重新定義,也可以重新賦值。(4)實現(xiàn)抽象類和接口的類必須實現(xiàn)其中的所有方法。在抽象類中可以有自己的數(shù)據(jù)成員,也可以有非abstarct的成員方法。而在in terface中,只能夠有靜態(tài)的不能被修改的數(shù)據(jù)成員, 所有的成員方法都是 abstract的。實現(xiàn)接口的一定要實現(xiàn)接口里定義的所有方法,而實現(xiàn)抽 象類可以有選擇地重寫需要用到的方法。一般的

30、應用里,最頂級的是接口,然后是抽象類實現(xiàn)接口,最后才到具體類實現(xiàn)。2.區(qū)分接口與抽象類分別在什么場合使用?如果預計要創(chuàng)建類的多個版本,則創(chuàng)建抽象類。抽象類提供簡單的方法來控制類版本。如果創(chuàng)建的功能將在大范圍的異類對象間使用,則使用接口。如果要設計小而簡練的功能塊,則使用接口。如果要設計大的功能單元,則使用抽象類。如果要向類的所有子類提供通用的已實現(xiàn)功能, 則使用抽象類。抽象類主要用于關系密切的對象;而接口適合為不相關的類提供通用功能。抽象類應主要用于關系密切的對象,而接口最適合為不相關的類提供通用功能。接口多定義對象的行為;抽象類多定義對象的屬性;3.個類如何實現(xiàn)接口?實現(xiàn)某接口的類是否一定要重載該接口中的所有抽象方法?一個類使用關鍵字implements實現(xiàn)某接口。實現(xiàn)某接口的類如果不是抽象類,則需要通過 重載來實現(xiàn)該接口中的所有抽象方法;如果這個類是抽象類, 則它可以不必實現(xiàn)該接口中的所有抽象方法。4.對于以下程序,運行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論