閱讀書目:Java入門經典(第7版) 做者:羅格斯·卡登海德java
面向對象編程(OOP)將程序視爲對象的集合,肯定程序要完成的任務,而後將這些任務指派給最適合完成它們的對象。換言之,計算機程序是一組對象,這些對象協同工做以完成某項任務,有些簡單程序看似只有一個對象(類文件)組成,但實際上也使用了其餘對象來完成工做。程序員
在面向對象編程中,對象包含兩項內容:屬性和行爲,屬性描述對象並使其不一樣於其餘對象,而行爲指的是對象能作什麼。編程
1 package com.java24hours; 2 3 public class Modem { 4 int speed; 5 6 public void displaySpeed() { 7 System.out.println("speed: "+speed); 8 } 9 }
經過繼承,程序員只需定義新類與現有類的不一樣之處,就可以建立一個新類。繼承其餘類可使用extends語句。spa
1 package com.java24hours; 2 3 public class ErrorCorrectModem extends Modem { 4 //繼承Modem類 5 }
咱們稱從其餘類繼承而來的類爲子類,被繼承的類爲超類。Java中存在大量的繼承,進而造成繼承層次。code
簡單變量類型轉換示例:對象
int destination = (int)source;
對象間的類型轉換:能夠在任何須要超類的地方使用類對象。也能夠將對象用於須要其子類的地方,但因爲子類含有更多信息,若是程序使用對象沒有包含的子類方法,將致使錯誤。將類型用於須要子類的地方,須要進行顯式地類型轉換。blog
1 public void paintComponent(Graphics comp){ 2 Graphics2D comp2D = (Graphics2D) comp; 3 }
簡單變量和對象之間的類型轉換,例如:繼承
Integer suffix = new Integer(5396); int newSuffix = suffix.intValue();
String count = "25"; int myCount = Integer.parseInt(count);
1 package com.java24hours; 2 3 public class NewRoot { 4 public static void main(String[] arguments) { 5 int number = 100; 6 if(arguments.length>0) { 7 number = Integer.parseInt(arguments[0]); 8 } 9 System.out.println("The square root of " 10 +number 11 +" is " 12 +Math.sqrt(number) 13 ); 14 } 15 }
Java的自動封裝功能將簡單變量值轉換爲相對應的類,封裝功能將對象轉換爲相對應的簡單變量值。io
在如今的Java版本中,以下的語句也是合法的語句:面向對象編程
Float total = new 1.3F; float sum = total/5; Integer suffix = 5309;
建立對象:
1 package com.java24hours; 2 3 public class Modem { 4 int speed; 5 6 public void displaySpeed() { 7 System.out.println("speed: "+speed); 8 } 9 }
1 package com.java24hours; 2 3 public class CableModem extends Modem{ 4 String method = "cable connection"; 5 6 public void connect() { 7 System.out.println("Connecting to the Internet..."); 8 System.out.println("Using a " 9 +method); 10 } 11 }
1 package com.java24hours; 2 3 public class DslModem extends Modem{ 4 String method = "DSL phone connection"; 5 6 public void connect() { 7 System.out.println("Connecting to the Internet..."); 8 System.out.println("Using a " 9 +method); 10 } 11 }
1 package com.java24hours; 2 3 public class ModemTester { 4 public static void main(String[] arguements) { 5 CableModem surfBoard = new CableModem(); 6 DslModem gateway = new DslModem(); 7 surfBoard.speed = 5_000_000; 8 gateway.speed = 4_000_000; 9 System.out.println("Trying the cable modem: "); 10 surfBoard.displaySpeed(); 11 surfBoard.connect(); 12 System.out.println("Trying the DSL modem "); 13 gateway.displaySpeed(); 14 gateway.connect(); 15 } 16 }
Java不像C++中一個類能夠繼承多個類,任何一個類只有一個超類。