面試多態
⑴ Java題:繼承和多態。昨天面試時問的題。
都不能。
所謂繼承,為子類繼承父類的一切(不包private和構造方法),即子類可以調用父類專的方法或屬變數。但父類無權調用子類的方法或變數。不過在實例化子類時,會自動調用父類的構造方法,也可通過 super 調用父類的構造方法。
現實中,男人和女人分別繼承 「人」 類 ,人所具備的特性,男人和女人都有,如四肢,說話,以及思考等。但女人能生孩子,男人可不行。這是女人特有的方法。生只有女人能調用。所以你不能說人能生孩子。
⑵ 面試時如何解答什麼是繼承什麼是多態什麼是線程
繼承:
通過繼承機制,可以利用已有的數據類型來定義新的數據類型。所定義的新的數據類型不僅擁有新定義的成員,而且還同時擁有舊的成員。我們稱已存在的用來派生新類的類為基類,又稱為父類。由已存在的類派生出的新類稱為派生類,又稱為子類。
多態:
多態(Polymorphism)按字面的意思就是「多種狀態」。在面向對象語言中,介面的多種不同的實現方式即為多態。引用Charlie Calverts對多態的描述——多態性是允許你將父對象設置成為和一個或更多的他的子對象相等的技術,賦值之後,父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作(摘自「Delphi4 編程技術內幕」)。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。多態性在Object Pascal和C++中都是通過虛函數(Virtual Function) 實現的。
線程:
線程有時被稱為輕量級進程(Lightweight Process,LWP),是程序執行流的最小單元。一個標準的線程由線程ID,當前指令指針(PC),寄存器集合和堆棧組成。另外,線程是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創建和撤消另一個線程,同一進程中的多個線程之間可以並發執行。由於線程之間的相互制約,致使線程在運行中呈現出間斷性。線程也有就緒、阻塞和運行三種基本狀態。就緒狀態是指線程具備運行的所有條件,邏輯上可以運行,在等待處理機;運行狀態是指線程佔有處理機正在運行;阻塞狀態是指線程在等待一個事件(如某個信號量),邏輯上不可執行。每一個程序都至少有一個線程,若程序只有一個線程,那就是程序本身。
線程是程序中一個單一的順序控制流程。進程內一個相對獨立的、可調度的執行單元,是系統獨立調度和分派CPU的基本單位指運行中的程序的調度單位。在單個程序中同時運行多個線程完成不同的工作,稱為多線程。
⑶ 面試官問java多態 怎麼回答,不要復制的答案,要自己的見解,謝謝
多態具體表現在重寫和重載
多態就是類的多種表現方式
比如方法的同名不同參
子類重寫父類
⑷ Java中面向對象的多態性的體現,面試中問我,不知道怎麼回答
所謂多態:就是抄父類的引襲用指向new 子類();
多態的前提:必須要有extends 或者 implements。
例如:
class Person{
void add(){}
}
class Student extends Person{
void add(){System.out.println("super");}
void ss(){}
}
public class Demo{
public static void main(String[] args){
Person p = new Student();
p.add(); //如果子類重寫了add,輸出子類
// p.ss(); //由於是Person的引用,所以調用不到Student的方法。
Student s = (Student)p; //向下轉型
s.ss(); //可以正常訪問
}
}
⑸ Java三大特性,封裝繼承多態。面試官要我簡單的描述其特性,求大神幫我總結下,面試直接能用的那種。
封裝,繼承,多態,這是JAVA面向對象編程的三大特性了。 一。封裝:是把客專觀事物封裝成抽象的屬類,並且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。封裝是類的特徵之一,應該可以理解,像一些私有的,別的類不可以訪問了啊,都有訪問許可權的,比較安全了。 二。繼承:指這樣一種能力:它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴展。 繼承有三種方式,實現繼承、介面繼承和可視繼承。 三。多態:簡單的說就是,允許將子類類型的指針賦值給父類類型的指針。 實現多態,有二種方式,方法覆蓋,方法重載。 JAVA博大精深,不是一言兩語就可以說清的,我就不在這里多言了,簡單的說了一點點,希望親能採納
⑹ java面試時像問繼承,多態,封裝這些基礎知識時都是做試卷嗎還是有些公司直接嘴上問,然後自己答
以我的經驗這些基礎的問題多半是做試卷,甚至很多公司根本不問的,他們更關心你是否能快速做事,所以最好看看他們的入職要求需要的技能,主流的框架應用啥的
⑺ 面試的時候問什麼是多肽,該怎麼回答
你是說多態吧。就是允許統一名稱函數不同輸入參數。比如加法,可以通過多態實現不同輸入參數類型的運算。
⑻ 假如面試官問"請詳述一下多態及其實現方式" 我該怎麼回答 求指導下 求詳細點的答案 (java的)
方法的重寫和重載是Java多態性的不同表現。
重寫是父類與子類之間多態性的一種表現。
重載是一個類中多態性的一種表現。
如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 。
子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被「屏蔽」了。
如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載。
並且重載的方法是可以改變返回值的類型的。
應該能懂了吧
…………我給你解釋下多態的意思
多態,我覺得它的作用就是用來將介面和實現分離開,改善代碼的組織結構,增強代碼的可讀性。
以下是我對多態的小結
1. Java中除了static和final方法外,其他所有的方法都是運行時綁定的。在我另外一篇文章中說到private方法都被隱式指定為final 的,因此final的方法不會在運行時綁定。當在派生類中重寫基類中static、final、或private方法時,實質上是創建了一個新的方法。
2.在派生類中,對於基類中的private方法,最好採用不同的名字。
3.包含抽象方法的類叫做抽象類。注意定義裡麵包含這樣的意思,只要類中包含一個抽象方法,該類就是抽象類。抽象類在派生中就是作為基類的角色,為不同的子類提供通用的介面。
4.對象清理的順序和創建的順序相反,當然前提是自己想手動清理對象,因為大家都知道Java垃圾回收器。
5.在基類的構造方法中小心調用基類中被重寫的方法,這里涉及到對象初始化順序。
6.構造方法是被隱式聲明為static方法。
7.用繼承表達行為間的差異,用欄位表達狀態上的變化。
為了給你講明白,我再給你寫端例子
/**
* 定義一個基類
*/
public Class Parents {
public void print() {
System.out.println(「parents」);
}
}
/**
* 定義兩個派生類
*/
public Class Father extends Parents {
public void print() {
System.out.println(「father」);
}
}
public Class Mother extends Parents {
public void print() {
System.out.println(「mother」);
}
}
/**
* 測試輸出結果的類
*/
public Class Test {
public void find(Parents p) {
p.print();
}
public static void main(String[] args) {
Test t = new Test();
Father f = new Father();
Mother m = new Mother();
t.find(f);
t.find(m);
}
}
最後的輸出結果分別是father和mother,將派生類的引用傳給基類的引用,然後調用重寫方法,基類的引用之所以能夠找到應該調用那個派生類的方法,就是因為程序在運行時進行了綁定。
⑼ 抽象 繼承 封裝 多態,面試的時候怎樣說
把現實中需要處理的事物通過數據的方法表達出來就是抽象
把事物的數據和方法用類的方式集合起來就是封裝
封裝的數據和方法通過繼承來實現重用
同一個方法通過方法的重載實現不同的邏輯即多態
⑽ 如果面試的時候 問 什麼是多態,我怎麼回答比較顯得有智慧呵呵
跟考官舉例子來,例如:有一個介面叫武自器(Weapon),武器有很多種,刀、槍、棍、棒,一個人(Person),想使用武器,可以選很多種,只需要 Weapon weapon = new Knife(); Weapon weapon = new Spear(); 這樣就是多態。