面向對象
- 面向對象編程的本質:以類的方式組織代碼,以對象的組織封裝數據。
- 三大特性:封裝,繼承,多態。
- 構造器:
- 和類名相同
- 沒有返回值
- 作用:
- new 本質在調用構造方法
- 初始化對象的值
- 生成構造器快捷鍵:alt+insert
封裝
屬性私有private後要提供get,set方法。
封裝的意義:
- 提高程序安全性,保護數據
- 隱藏代碼實現細節
- 統一接口
- 增加系統可維護性
繼承
- 在Java中所有類默認繼承Object類
- Java中只有單繼承
- 如果父類只有有參構造,那麼子類也只能調用有參構造,因為子類構造方法內第一句默認為super()。
public 子類名(){
super();//這句是隱藏代碼
......
}
- super和this不能同時調用構造方法
多態:同一個方法根據發送對象的不同而採取多種不同的方法
靜態方法(static)的調用只和左邊,定義的數據類型有關
靜態方法屬於類不屬於實例
//已知A為B的子類
A中的調用方法為public static void test(){System.out.println("A");}
B中的調用方法為public static void test(){System.out.println("B");}
A x=new A();
x.方法名();//調用的是A的方法,結果為A
B x=new A();
x.方法名();//調用的是B的方法,結果為B
非靜態方法的調用,子類會重寫父類,與子類方法有關
//已知A為B的子類
A中的調用方法為public void test(){System.out.println("A");}
B中的調用方法為public void test(){System.out.println("B");}
A x=new A();
x.方法名();//結果為A
B x=new A();
x.方法名();//結果為A
對象能執行哪些方法,主要看對象左邊的類型,和右邊關係不大
//person為student的父類
class person{
public void A(){
System.out.println("A") ;
}
}
class student {
public void A(){
System.out.println("AA") ;
}
public void B(){
System.out.println("B") ;
}
}
public class demo1 {
public static void main(String[] args) {
//student能調用的方法都是自己的或者繼承父類的
student s1=new student();//可以調用A方法,B方法分別輸出AA,B
//person父類型,可以指向子類,但是不能調用子類獨有的方法
person s2=new student();//可以調用A方法,輸出AA,因為子類重寫了父類的方法,所以執行子類方法內容
Object s3=new student();
- instanceof:(類型轉換)引用類型。判斷一個對象是什麼類型。
//person為student的父類
Object object = new student();
System.out.println(object instanceof student);true
System.out.println(object instanceof person);true
System.out.println(object instanceof Object);true
System.out.println(object instanceof String);//False
- 子類轉換父類,可能丟失自己的方法類型。
- 低轉高類型為自動轉換(子類轉換為父類),否則為強制轉換(父類轉換為子類)
Static靜態
非靜態方法可以調用靜態方法
靜態方法不能調用非靜態方法
一個類中,調用方法的順序為:靜態代碼塊(只調用一次)---匿名代碼塊---構造方法
接口
接口不能被實例化,接口中沒有構造方法
內部類
一個Java文件中可以有多個class類,但是隻能有一個public class
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。