一基本特征
面向對象的基本特征有三個:封裝性,繼承性,多態性
- 封裝性 封裝是一種信息隱藏技術,封裝使數據和加工數據的函數封裝成一個整體,使用戶只看到對象的外特性,目的在于把對象的設計者和對象的使用者區別開來。
- 繼承性 繼承就是子類和父類可以共享數據,子類可以直接繼承父類的全部描述,并且可以加以修改和補充,繼承分為單繼承和多繼承。
- 多態性
對象根據接受到的消息做出的不同的動作。不同對象對接收到的同一消息可以產生不同的動作。
二、面向對象和面向過程的區別
- 面向過程編程試講程序一步一步分解,并且按照一定的順序執行,環環相扣,最大的缺點就是,如果需求發生了改變,需要改動的太多了。
- 面向對象編程的使用是要先定義一個類然后用該類型下的“對象”組裝程序,對象之間通過‘消息傳遞’。最大的缺點是:執行效率過低。
二、基本概念
類
類是具有相同屬性及相同動作的一組對象。
類的聲明
- 語法
[標識符] class 類名稱{
//類成員變量
//類的方法
}
- 類的控制符
Java的訪問權限主要有四個
- 1、默認模式(default) 默認模式下,不需要為某個類,方法等不加任何訪問修飾符。這類方式聲明的方法和類,只允許在同一個包(package)內是可 以訪問的。
- 2、private(私有) 被聲明為“私有”訪問,那么他只能在當前聲明它的類里面訪問,類和接口的訪問方式是不能被聲明為私有的
- 3、public(公有) Java中歲訪問權限控制最寬松的修飾符。如果一個方法、變量、和構造方法和接口被定義為“公共”訪問,那么它不僅可以跨類訪問,而且允許跨包訪問。如果要訪問的其它包里有公共成員,則需要倒包。
- 4、protected(受保護的)如果一個變量、方法、和構造方法在父類中被聲明為"保護"訪問類型,只能被類本身及其子類訪問,即使子類在不同的包也可以被訪問。
注:final類不能被繼承。
- 類的定義
[標識符] class 類名稱{
數據類型 屬性;
類名稱 (參數,...)
}
返回值的數據類型 方法名稱(參數1,參數2,...)
{
程序語句;
return表達式;
}
}
注:static修飾的成員不能訪問沒有stati修飾的成員。
- 類的屬性
定義屬性的語法:
[修飾符]屬性類型 屬性名[=默認值]
對象
對象是類的實例化產物。但是對象可以定義不同的屬性。
- 對象的聲明
語法:
類名 對象名 = new 類名();
步驟:
- 1、聲明指向“由類所創建的對象”的變量。
- 2、利用new創建新的對象,并指派給先前所創建的變量。
舉例:
Person p = new Person();
- 對象的使用
語法:
對象名稱.屬性名 //訪問屬性
語法名稱.方法名 //訪問方法
- 匿名對象
對一個實例化的操作來講,對象真正有用的部分是在堆內存里面,棧內存只保存了一個對象的引用名稱。所以所謂的匿名對象是指,只開辟堆內存空間,而沒有棧內存指向的對象
匿名特點:
- 1、匿名對象是沒有被其他對象所引用
- 2、由于匿名對象沒有棧內存指向,所以其只能使用一次,時候就變成無法尋找的垃圾
- 對象的比較
- 1、“ == ”運算符
“==”運算符是比較兩個對象的內存地址值(引用值)是否相等 - 2、利用“equals()”方法
equals()方法用于比較兩個對象的內容是否一致
例:
String str1 = new String("java");
String str2 = new String("java");
str1和str2完全相等,如果用“==”運算符比較,那就是不相等的,因為分別是用new實例化了兩個String類型。如果是用“equals()”方法比較那他們就是想等的。