1.類和對象:類可以看成是一類對象的模板,對象可以看成是該類的一個具體實例.
2.類(對象)之間的關係:聚合,繼承,實現,多態.
3.內存區分: 類是靜態概念,代碼區; 對象是new出來的,位於堆內存
4.構造方法(函數):(1)與類同名且沒有返回值
(2)用來初始化對象的函數
(3)new+構造方法,創建一個新的對象
5.命名規則:類名的首字母大寫,變量名和方法首字母小寫,運用駝峯標識
6.棧內存存入一個引用指向堆內存
7.方法重載(OverLoad):相同名字,相同返回類型,當參數不同(個數不同或類型不同),的多個方法
8.static:用static聲明的成員變量稱爲靜態的成員變量,公用變量,對於該類的所有對象來說static成員變量只有一份
用static聲明的方法稱爲靜態方法,在調用該方法時不會將對象的引用傳遞給他,所以static方法中不能訪問非
static的成員
可以通過對象引用或類名(不需要實例化)訪問靜態成員
9.訪問控制:
10.方法重寫(OverRide):在子類中可以根據需要對父類中繼承來的方法進行重寫
11.equals:Object的equals方法定義爲:x.equals(y)當x和y是同一對象的引用時返回true否則返回false(等價於==)
String,Date等類重寫了Object中的equals()方法,x.equals(y)當x和y所引用的是同一類對象且屬性內容相等時返回true.
12.多態:(1)要有繼承
(2)要有重寫
(3)父類引用指向子類對象
class Animal {
private String name;
Animal(String name){this.name = name;}
public void enjoy(){
System.out.println("叫聲......");
}
}
class Dog extends Animal{
private String color;
Dog(String n,String c){
super(n);
color = c;
}
public void enjoy(){
System.out.println("狗叫聲......");
}
}
class Cat extends Animal{
private String eyesColor;
Cat(String n,String c){
super(n);
eyesColor = c;
}
public void enjoy(){
System.out.println("貓叫聲......");
}
}
class Lady {
private String name;
private Animal pet;
Lady(String name,Animal pet){
this.name = name; this.pet = pet;
}
public void myPetEnjoy(){
pet.enjoy();
}
}
public class Poolymoph{
public static void main(String[] args) {
Cat c = new Cat("catname","blue");
Dog d = new Dog("dogname","black");
Lady l1 = new Lady("l1",c);
Lady l2 = new Lady("l2",d);
l1.myPetEnjoy();
l2.myPetEnjoy();
}
}
輸出爲:貓叫聲......
狗叫聲......
總結:建一個Animal父類,寫其enjoy方法,在把Cat、Dog等類作爲子類繼承Animal類,並重寫其enjoy方法;最後把Cat、Pig這些類全部扔進籃子裏,調用其enjoy方法,就會自動地去調用Cat、Pig對應的enjoy方法。
13.抽象:抽象類必須被繼承,抽象方法必須重寫,含有抽象方法的類必須被聲明爲抽象類
抽象類不能被實例化
抽象方法只需聲明,而不需實現
14.final:final的變量的值不能被改變,final的方法不能被重寫,final的類不能被繼承
15.接口:接口是抽象方法和常量之的定義和集合
從本質上講,接口是一種特殊的抽象類,這種抽象類中之包含常量和方法的定義,而沒有常量和方法的實現
接口特徵:1、接口可以多重實現
2、接口中聲明的屬性默認爲public static final的,也只能是public static final的
3、接口中只能定義抽象的方法,而且這些方法默認爲public,也只能是public的
4、接口可以繼承其他接口,並添加新的屬性和抽象方法