編程語言的發展:
機器語言——直接由計算機的指令組成,指令、地址、數據都是以"0"和"1"的符號串組成,可以被計算機直接執行。
匯編語言——用容易理解和記憶的符號表示指令、數據和寄存器等,抽象層次很低,程序員需要考慮大量的機器細節。
高級語言——屏蔽了機器細節,提高了語言的抽象層次,更加接近于自然語言,60年代出現的結構化編程設計語言提出了結構化數據和語句,數據和過程抽象等概念。
面向對象的語言——與以往的各種語言不同,他的設計出發點就是為了更能直接的描述問題域中客觀存在的事物。
對于JAVA大家都知道,它是一種面向對象的程序設計思想,那面向對象和面向過程有什么區別呢?舉一個例子,比如我要到湖南,面向過程的設計思路:首先我們制定好路線,我要啟動汽車,我要掛上檔,我要踩下油門,我要握住方向盤,我要按著路線前進。面向對象的設計思路:選擇一種交通工具,具體如何到呢?交給交通工具去處理。交通工具制定行駛路線,至此我們就可以上路了。說了這么多,大家一定還有點霧里看花的感覺,面向對象突出類的概念,類包含屬性和方法。本篇我們就一起回顧一下JAVA的面向對象設計。
1、對象和類的概念:
對象——用計算機語言對問題域中事物的描述,對象通過屬性和方法,來分別表示事物所具有靜態屬性和動態屬性。
類——類是用來描述同一類型的對象的一種抽象的概念,類中定義了這一類對象所具有的靜態和動態屬性。
類可以看做是對象的一種抽象,對象則是類的一個具體實例。
2、類和對象的創建和使用:(代碼實例)
類:Animail.java
//類的創建public class Animail { //全局變量 PRivate int age; private String name; //添加方法 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 void Print(){ static int money = 3000;//成員變量,作用域為該方法域,必須先賦值,后使用 System.out.println("一般方法執行了"); } /* * 構造方法沒有返回值 * 當沒有添加構造方法時,系統默認為類添加一個無參構造方法 * 當添加一個有參構造方法后,系統將不再為該類添加無參構造方法 */ //無參構造方法 public Animail(){ System.out.println("無參構造方法執行了"); } //有參構造方法 public Animail(int age){ System.out.println("有參構造方法執行了 age="+age); }}對象:test.java
public class Test { /** * @param 類和對象 */ public static void main(String[] args) { Animail animail = new Animail();//對象的創建,執行該類的無參構造方法 Animail animail2 = new Animail(1);//對象的創建,執行該類的有參構造方法 //方法的執行,通過對象名點方法名執行 animail.setAge(10); animail.setName("小貓"); System.out.println("name="+animail.getName()+" age="+animail.getAge()); animail.Print(); }}3、this、static、package、import、訪問控制
this:當前的,當對類中全局變量進行修改時,當參數名與全局變量名一致時,使用this關鍵字,對當前對象的該屬性進行修改。
static:全局的,用static聲明的成員變量為靜態成員變量,它為該類的公用變量,在第一次使用時進行初始化,對于該類的所有多象,static成員變量只有一份。
package:包,JAVA為了防止用戶命名重復時,導致出錯,添加了包的概念,包名的命名一般為公司域名的倒敘。
import:引用,當你需要使用另外一個包內的方法時,就需要使用import關鍵字,將該包引入進來。
JAVA的訪問控制分為:private(私有的)、默認、protected(不公開的)、public(公開的)

4、繼承:
關鍵字:extends,繼承為何物?比如說,你爸是富豪,你得到了他擁有的資金,這就是繼承,JAVA提供的繼承為單繼承,也就是一個類只能有一個父類。
代碼:父類:
public class Phone { int money; public Phone(){ System.out.println("父類的構造方法"); } public void sendEMS(){ System.out.println("父類發短信方法"); }}子類:
public class cellPhone extends Phone { String color; public cellPhone(){ System.out.println("子類構造方法"); } //子類可以重寫父類的方法 public void sendEMS(){ System.out.println("子類發短信方法"); }}測試代碼:
public class test { public static void main(String [] args) { //首先執行父類的構造方法,然后執行子類的構造方法 Phone phone = new cellPhone();//向上轉型 //執行子類重寫的方法 phone.sendEMS(); }}5、重寫:
方法重寫即子類對象可以根據需要對父類方法進行重寫定義。
6、重載:
方法重載是指一個類中可以定義多個具有相同的名字,但參數不同的多個方法,調用時會根據參數的不同調用不同的方法。
實例代碼:
方法類:
public class Sum { public void sum(int a, int b){ System.out.println("方法一:"+a+"+"+b+"="+(a+b)); } public void sum(int a, double b){ System.out.println("方法二:"+a+"+"+b+"="+(a+b)); } public void sum(double a, int b){ System.out.println("方法三:"+a+"+"+b+"="+(a+b)); } public void sum(double a, double b){ System.out.println("方法四:"+a+"+"+b+"="+(a+b)); }}測試類:
public class test { /** * @param 方法重載 */ public static void main(String[] args) { Sum sun = new Sum(); sun.sum(1, 1); sun.sum(1, 1.1); sun.sum(1.1, 1); sun.sum(1.1, 1.1); }}6、final、object:
final:靜態的,我們學習C語言時,通過#define count 60,來定義常量,JAVA同樣提供了常量的定義方法,就是final關鍵字,我們只需要在定義變量時添加一個final聲明,它就變成了一個常量,常量只能被賦值一次。
object類是JAVA所有類的父類。
7、多態:
定義:a、存在繼承;b、子類對象對父類方法有重寫;c、父類引用指向子類對象
對于父類引用指向子類對象,需要注意的是,對象轉型時,應使用instanceof關鍵字
代碼實例:
public class Test { /** * @param 多態 */ public static void main(String[] args) { Animail animal = new Dog();//向上轉型// Dog dog = (Dog)animal;//向下轉型時,添加強制類型轉換// Cat cat = (Cat)animal;//向下轉型時容易出現這種錯誤 //為了防止出現上述錯誤,我們使用instanceof關鍵字 if(animal instanceof Dog){ Dog dog = (Dog)animal; }else{ System.out.println("animal不是狗"); } if(animal instanceof Cat){ Cat cat = (Cat)animal; }else{ System.out.println("animal不是貓"); } }}8、抽象類:
被abstract關鍵字修飾的類,我們稱之為抽象類,被absteract修飾的方法為抽象方法。含有抽象方法的類,必須為抽象類,抽象類必須被繼承,抽象方法必須被重寫。抽象類不能被實例化,抽象方法只需聲明,不需要實現。
9、接口:
接口(interface)是抽象方法和常量值的定義的集合,從本質上講,接口是一種特殊的抽象類。
代碼實例:
接口:
public interface inter { double PI = 3.14; public void start(); public void run(); public void stop();}類:
public class test implements inter { public void run() { } public void start() { } public void stop() { }}對于JAVASE面向對象的知識就為大家總到此,由于文字描述的局限,如果有不懂的地方可以留言。
新聞熱點
疑難解答