面試題:1.1.1面向對象的特徵:繼承、封裝和多態_第一套

一篇不錯的文章:JAVA基礎——面向對象三大特性:封裝、繼承、多態

筆記:
1.什麼是面向對象?怎麼用?優缺點?
答:①面向對象,簡稱OOP,是一種編程思想.一本書/一個筆都是對象,可以說–萬物皆可對象!書的高/寬,都是對象的屬性,手機的聽歌,照相都是對象的方法!
(延伸:OOA:Object - Oriented Analysis, 面向對象分析
OOD:Object - Oriented Design,面向對象設計
OOP:object - Oriented Programming面向接口編程)
2.封裝:什麼是封裝?怎麼用?優缺點?
①封裝:講類的某些信息隱藏在類內部,不允許其他的外部程序直接訪問,而是通過調用該類中的方法實現對隱藏信息的訪問和操作!
②如何實現封裝?
將屬性設置爲"private"
創建getter/setter方法
在getter/setter方法中加入屬性的控制語句
③優點:
安全:只能通過規定的方法訪問數據
隱藏類的實例細節,方便修改和實現.
(延伸:
1. this關鍵字–代表當前對象
this.屬性–表示當前對象屬性
this.方法–表示當前對象的方法
this多用在封裝的setter/getter方法,當setter/getter方法的參數名和成員函數名相同時用this

2.Java的內部類
內部類–類裏面的類, 外部類–包含內部類的類就是外部類
內部類的主要作用:①內部類提供了更好的封裝,不允許同一包中的其他類訪問該類②內部類的方法可以訪問外部類的所有屬性,包括私有屬性③內部類實現的方法外部類也能實現,只是使用內部類更方便)

3.繼承:什麼是繼承?怎麼用?優缺點?
①繼承:是類與類的一種關係,是"is a"的一種關係.“狗"繼承"動物”,
動物類叫父類/基類,狗類叫子類/派生類
②好處:
子類擁有父類的所有屬性和方法(除了private修飾的屬性不能用),從而實現來代碼的複用.
③在子類後加上 extend 父類即可
例: class Dog extend Animal{}

a.方法的重寫
	**重寫和重載的區別**:
		方法重寫:子類繼承父類後,對父類已存在的方法進行區別化的修改.
		方法重載:同一個類中,幾個名字相同的方法,但是參數不同

	重寫:對繼承父類的方法不滿意進行修改,調用時優先調用重寫的方法!
	但是:①返回值類型②參數名③參數類型及個數   不可以改變
		
b.繼承的初始化順序
	①先初始化完父類,再初始化子類
	②再類中初始化:對象→屬性→構造方法
c.final關鍵字
	final表示"最終的"
	①final修飾類,類不可以被繼承
	②final修飾方法,方法不允許重寫
	③final修飾屬性,則該屬性不能被系統設定默認值,所以初始化屬性必須有值,或構造方法中必須賦值(二者必須選一,且只能選一,因爲沒有默認值).且初始化只能一次,只能賦值一次
d.super關鍵字 
	在對象的內部使用,可以調用父類的屬性和方法
e.Object類
	所有類的父類

4.多態:什麼是多態?怎麼用?優缺點?
①多態:多態就是對象的多種形態.注意:繼承是多態的基礎
②多態主要有兩種:
a.引用多態
父類的引用可以指向本類
父類的引用也可以指向子類

public static void main(String[]args){
	Animal a1=new Animal();	//引用指向父類
	Animal a2=new Dog():	//引用指向子類
}

注意:但是子類不能指向父類
b.方法多態
本類對象和子類對象創建時,都會調用父類的引用,當我們調用不同的引用時,它們調用的方法也是多態的.
創建本類時,調用父類的方法
創建子類時,調用子類的繼承或重寫的方法.
5.抽象類與接口
抽象類就是用abstract修飾的類.

public abstract class Animal{
	
}

接口就是interface修飾的類

public interface a{
}

具體區別詳見:https://www.cnblogs.com/hysum/p/7100874.html#_label2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章