類的多态性:
Java語言中含有方法重載與成員覆寫兩種形式的多态:(差別于c++)
方法重載:在一個類中,允許多個方法使用同一個名字,但方法的參數不同,完成的功能也不同。
成員覆寫:子類與父類允許具有相同的變量名稱,但資料類型不同,允許具有相同的方法名稱,但完成的功能不同。
類:class 對象:object 執行個體:Instance
建立屬于某類的對象,需要通過下面兩個步驟來實作:
1、 聲明指向"由類所建立的對象"的變量
2、 利用new建立新的對象,并指派給先前所建立的變量。
舉例來說,如果要建立Person類的對象,可用下列的語句來實作:
方法一:
Person p ; // 先聲明一個Person類的對象p
p = new Person() ; // 用new 關鍵字執行個體化Person的對象p
方法二:
Person p = new Person() ; // 聲明Person對象p并直接執行個體化此對象
匿名對象:
“匿名對象”,顧名思義,就是沒有明确的聲明的對象,也可以簡單了解為隻使用一次的對象,即沒有任何一個具體的對象名詞引用它;
System.out.println(new Person().talk() ); //聲明了一個匿名對象,調用Person類中的()方法;
用new Person() 聲明的對象并沒有賦給任何一個Person類對象的引用,是以此對象隻使用一次,之後就會被java 的垃圾收集器回收;
對象的比較:
有兩種方式可用于對象間的比較,它們是 "=="運算符與equals()方法,
“==” 操作符用于比較兩個對象的記憶體位址值是否相等,
equals( )方法用于比較兩個對象的内容是否一緻;
下面兩種String對象的聲明方式到底有什麼不同?
String str1 = new String("java");
public class StringDemo
{
public static void main(String args[])
{
String str1 = "java";
String str2 = new String("java");
String str3 = "java";
System.out.println("str1 == str2?" + (str1==str2));
System.out.println("str1 == str3?" + (str1==str3));
System.out.println("str2 == str3?" + (str2==str3));
}
}