這一章節我們來簡單的聊聊對象抽象的過程。
1.所有語言都提供抽象機制。
例如:a=1(下面都是舉例子,裡面所提及的内容有可能是錯誤的,因為筆者沒學過機器碼和彙編)
在機器碼當中:1000100111011000
在彙編當中:mov a,1
在C語言當中:a=1
在java當中:
class Test(){
a=1;
}
從上面的不同的表示裡面可以發現,語言都是在不斷的抽象,從最開始的0和1,一直到java的建立一個對象然後在對象裡面指派,就是一個不斷抽像的過程。
同時,也是程式設計語言努力把問題空間(實際業務)與解空間(計算機)聯系起來的表現。
解釋:
1.在機器碼時代,實際業務跟計算機直接的連接配接是非常困難的,大家可以看到a=1這麼簡單的操作,就是一大段0和1,誰記得住,當然,記得住的都是強人。
2.在彙編時代,程式設計語言進步了,做出了第一次的抽象,把0和1抽象成某些句子,可以利用簡單的句子來描述a=1,但是由于抽象程度有限,是以,程式設計的複雜程度還是比較高
3.到了c語言時代,可以說抽象進行了一次飛躍,C語言基本能夠處理日常問題,而且性能非常卓越
4.到了java時代,提出了oop,使得實際業務的描述跟計算機的解決方案的描述已經比較吻合
總結:
4個時代的變遷,性能越來越低,但是可讀性越來越高,時至今日,除非是高并發網際網路企業,一般來說性能不是最大問題,瓶頸出現在人上面,是以,現在可讀性反而顯得更加重要。
2.java的基本特性
1)萬物皆對象。
對象是一個奇特的變量,它既可以存儲資料,也可以執行操作,我們可以抽象問題的構件來組成程式。
例如:名字是“jack”的狗會叫的。
class Dog(){
private String name;
private String id;
public void bark(){
}
}我們建立狗的對象,然後這個狗有一個屬性“名字”,而且它會叫,是以有一個方法“bark”
在對象狗裡面,既可以存儲狗的名字,也可以執行狗叫的方法。
2)程式是對象的集合,它們通過發送資訊來告訴彼此需要做什麼(說白了,就是調用對象的方法)。
package com.ray.ch01;
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
dog.setName("jack");
dog.bark();
}
}
class Dog {
private String name;
public void bark() {
System.out.println(name + " is barking");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在上面的程式中dog.bark()就是調用了Dog對象的bark方法。
3)每個對象都有由其他對象組成的存儲。
package com.ray.ch01;
import java.util.ArrayList;
public class GroupOfDogs {
private ArrayList catList;
private void initCatList() {
for (int i = 0; i < 5; i++) {
Cat cat = new Cat();
cat.setName("rose" + i);
catList.add(cat);
}
}
public static void main(String[] args) {
new GroupOfDogs().initCatList();
}
}
class Cat {
private String name;
public void bark() {
System.out.println(name + " is barking");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
從上面的代碼可以看出,特别是private ArrayList catList,這一個存儲就是通過其他對象來完成的。
4)每個對象都有類型
package com.ray.ch01;
public class Bird {
public static void main(String[] args) {
Bird bird = new Bird();
}
}
上面的代碼,bird是一個對象,它的類型是Bird,同時bird這個對象,也是Bird這個類型所具象出來的一個執行個體。
5)某一特定類型的對象,都可以接收同樣的消息。
package com.ray.ch01;
public class Bird {
private void say() {
}
public static void main(String[] args) {
Bird bird1 = new Bird();
bird1.say();
Bird bird2 = new Bird();
bird2.say();
}
}
上面的代碼建立兩個不同的對象bird1和bird2,他們是同一個類型Bird,是以,它們可以接收同樣的資訊,也就是我需要調用Bird這個類型裡面的say方法時,bird1和bird2都可以調用。
最後,對象是具有獨立的存儲、方法、辨別,在jvm裡面,每一個對象都是獨立的,具有唯一id。
這一章節簡單介紹了程式設計語言抽象過程,以及介紹了java的五個基礎特性。
這一章節就到這裡,謝謝。
-----------------------------------
版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。