Java—物件導向(一),java物件導向
說到物件導向,就應該說說它的那幾個核心的機制:繼承,重寫,多態,抽象,介面。它們是判斷是否運用了物件導向編程的核心。接下來用幾個例子,看看它們的演變過程和它們之間的關係。
繼承:簡單來說,子類自動擁有父類的所有方法和屬性。
舉例:狗和貓都繼承了動物的叫聲。子類繼承父類。
class Animal { private String name; public void setName(String name){this.name=name;} public String getName(){return name;} public void enjoy(){ //動物叫聲。。。 System.out.println("叫聲......"); }} class Cat extends Animal { private String eyesColor; //貓自己特有的方法。public String geteyesColor() {return eyesColor;} public void seteyesColor(String eyesColor) {this.eyesColor =eyesColor;}}class Dog extends Animal {private String eyesColor; ////狗自己特有的方法。 public String geteyesColor() {return eyesColor;} public void seteyesColor(String eyesColor) {this.eyesColor =eyesColor;} }public class Test { public static void main(String args[]){ Cat c = new Cat(); Dog d = new Dog(); c.seteyesColor("貓是藍眼睛"); //實現了自己的特有方法。 d.seteyesColor("狗是黑眼睛"); c.enjoy(); //也繼承了父類的方法。 d.enjoy(); System.out.println(c.geteyesColor()); System.out.println(d.geteyesColor()); }} 結果:
解釋:狗和貓既有自己的特有屬性和方法,也全部擁有了動物(父類)的方法和屬性。這就是繼承的特點。
不過上述明顯有缺陷的就是狗和貓都有自己獨特的叫聲,但是在這卻都只是擁有了動物這個福士化的聲音。該怎樣改變呢?就用到了我們的重寫。
重寫:在子類中可以根據需要對從基類中繼承來的方法進行重寫。看看下面的改寫。
class Animal { private String name; public void setName(String name){this.name=name;} public String getName(){return name;} public void enjoy(){ //動物叫聲。。。 System.out.println("叫聲......"); }} class Cat extends Animal { private String eyesColor; public String geteyesColor() {return eyesColor;} public void seteyesColor(String eyesColor) {this.eyesColor =eyesColor;} public void enjoy() { //重寫了父類動物的方法。 System.out.println("貓叫聲......"); }}class Dog extends Animal {private String eyesColor; public String geteyesColor() {return eyesColor;} public void seteyesColor(String eyesColor) {this.eyesColor =eyesColor;} public void enjoy() { //重寫了父類動物的方法。 System.out.println("狗叫聲......"); }}public class Test { public static void main(String args[]){ Cat c = new Cat(); Dog d = new Dog(); c.seteyesColor("貓是藍眼睛"); d.seteyesColor("狗是黑眼睛"); c.enjoy(); d.enjoy(); System.out.println(c.geteyesColor()); System.out.println(d.geteyesColor()); }} 結果:
解釋:狗和貓都重寫了動物的Enjoy()方法,所以實現了自己專屬的叫聲。增加了靈活性。
從上面可以看出重寫是在繼承上進化而來的,所以先繼承再進行重寫。
PS:由於內容比較多,所以剩下的3個物件導向特點,在下篇部落格中講解。
Java中的物件導向是什?
面對對象就是:
把資料及對資料的操作方法放在一起,作為一個相互依存的整體——對象。對同類對象抽象出其共性,形成類。類中的大多數資料,只能用本類的方法進行處理。類通過一個簡單的外部介面與外界發生關係,對象與對象之間通過訊息進行通訊。程式流程由使用者在使用中決定。
對象即為人對各種具體物體抽象後的一個概念,人們每天都要接觸各種各樣的對象,如手機就是一個對象。
在物件導向的編程方式中,對象擁有多種特性,如手機有高度、寬度、厚度、顏色、重量等特性,這些特性被稱為對象的屬性。對象還有很多功能,如手機可以聽音樂、打電話、發資訊、看電影等工作功能,這些功能被稱為對象的方法,實際上這些方法是一種函數。而對象又不是孤立的,是有父子關係的,如手機屬於電子產品,電子產品屬於物體等,這種父子關係稱為對象的繼承性。在編程中,把所有的問題看做對象,以人的思維方式解決。這種方式非常人性化,對象實際上就是一組資料的集合,並且資料都已經命名。這些資料根據就是對象的屬性,可以被程式訪問。對象還包括很多函數,這些函數被稱為對象的方法,也可以被程式訪問。不過在外部存取對象內的屬性或方法,必須先引用對象,然後用點號訪問對象的屬性和方法
面向過程就是:
自頂向下順序執行,逐步求精;其程式結構是按功能劃分為若干個基本模組,這些模組形成一個樹狀結構;各模組之間的關係儘可能簡單,在功能上相對獨立;每一模組內部均是由順序、選擇和迴圈三種基本結構組成;其模組化實現的具體方法是使用子程式。程式流程在寫程式時就已決定。
用java類物件導向的方式,描述一下你自己,具體代碼
比如你是李剛,增加一個喊的方法,main也寫上.main方法裡不能再有別的方法,所以這樣寫
Class Person{
int age //年齡
String name //姓名
String gender //性別
public person(){}
public person(String name1){
name=name1;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
//你說的喊方法
public say(){
System.out.println("hello");
}
}
public class YourSelf{
public static void main(String args[]){
Person you=new Person("李剛");
you.say();
}
}