Java學習---JAVA的類設計
基礎知識
JAVA是由C/C++語言發展而來的純面向對象語言,其基本元素包括:簡單數據類型 和 復合數據類型(即類)。類是對客觀事物的抽象描述,它有面向對象的四個特點,即:封裝性、繼承性、多態性和通信相關性。
類由屬性和方法構成,類、屬性、方法都通過修飾符限制如何使用。常用的修飾符包括:public、protected、private、static、final、abstract等等。JAVA語言中除了類以外,還存在抽象類和接口,其中抽象類是使用abstract修飾的類,其中包含了抽象的方法(即只有方法的申明,無方法體,而且抽象的方法都需要被其子類所覆蓋),接口的關鍵字是interface,它僅包含使用finall修飾的成員變量和抽象方法。類之間的關系是繼承(extends),接口之間的關系也是繼承(extends),類與接口之間的關系是實現(implements)。
在類中的方法有三類,分別是:構造方法、普通方法和主方法。構造方法是對象初始化的方式,一般存在多個構造方法,根據帶入的參數構造不同的對象。主方法是程序的入口,其固定格式為:public static void main(String [] args)。類中的方法存在多態性,分別是:重載和覆蓋。其中,重載是在同一類中具有相同名稱的方法,而參數的類型和個數不同;覆蓋是具有繼承關系的父類和子類之間具有相同名稱的方法,且參數的類型和個數,以及返回值均相同。
使用類來聲明對象時,就是產生不同的個體,即實例化。且需要使用new操作符來申請內存空間。當該對象不再需要時,JAVA有三種垃圾回收方法,分別是:JVM周期性自動回收、調用System.gc()方法 和 定義finalize()析構方法。
JAVA語言標識符命名規則如下:
JAVA語言的標識符由字母、數字、下劃線(_)、美元符號($)組成,並且首字符不能使用數字;
不能把關鍵字作為標識符
標識符通常由多個有意義的英文單詞構成,且長度一般在30個字符以內
為了保證良好的編程風格,清晰標識各類符號,Java語言有如下編程規範:
● 類名和接口名:單詞首字母大寫,其余字母小寫,如SamDoc;
● 方法名和變量名:首單詞小寫,其余單詞的首字母大寫,其余字母小寫,如bothEyesOfDoll;
● 包名:字母全部小寫,如com.abc.dollapp;
● 常量名:采用大寫形式,單詞之間以下劃線“_”隔開,如DEFAULT_COLOR_DOL。
所有的關鍵字都是小寫。
代碼實例
舉例矩形類 和 長方體類,仿制圓形類和柱形類
1 class rectangle{ 2 double width; 3 double length; 4 public rectangle(){ 5 width = 10; 6 length = 10; 7 } 8 public rectangle(int width, int length){ 9 this.width = width; 10 this.length = length; 11 } 12 public rectangle(double width, double length){ 13 this.width = width; 14 this.length = length; 15 } 16 public double getCircle(){ 17 return 2*(width + length); 18 } 19 public double getArea(){ 20 return width * length; 21 } } 22 23 class cube extends rectangle{ 24 double height; 25 public cube(){ 26 width = 10; 27 length = 10; 28 height = 10; 29 } 30 public cube(double width1, double length1, double height){ 31 width = width1; 32 length = length1; 33 this.height = height; 34 } 35 public double getVol(){ 36 return widht * length * height; 37 } 38 public double getArea(){ 39 return 2*(width * length + width * height + length * height); 40 } 41 } 42 class example{ 43 public static void main(String [] args){ 44 rectangle r = new rectangle(20, 20); 45 cube c = new cube(11, 22, 33); 46 System.out.println("矩形的面積" + r.getArea()); 47 System.out.println("長方體的體積" + c.getVol()); 48 System.out.println("長方體的面積" + c.getArea()); 49 } }View Code
設計根據年月輸出當月日歷的程序,對比以下2個關於日期程序
1 public class date{ //該類只存在一個主方法,相當於一個C語言程序 2 public static void main(String [] args){ 3 int year = 2013; 4 int month = 3; 5 int day = 0; 6 boolean isLeap = false; 7 8 if((year % 400 == 0) || ((year % 100 == 0) && (year % 4 == 0))){ 9 isLeap = true; 10 } else { 11 isLeap= false; 12 } 13 switch(month){ 14 case 1: case 3: case 5: case 7: case 8: case 10: case 12: 15 day = 31; 16 break; 17 case 2: 18 day = if(isLeap)?29:28; 19 break; 20 default: 21 day = 30; 22 break; 23 } 24 for(int i=0; i<day; i++){ 25 if(i % 7 == 0)System.out.println(); 26 System.out.print((i+1)+"天"+"/t"); 27 } } }View Code
按照本班同學為例,編寫人類,同學類
1 class human{ 2 String name; 3 Int age; 4 Char gender; 5 public human(String name, int age, char gender){ 6 This.name = name; 7 This.age = age; 8 This.gender = gender; 9 } 10 public void setName(String name){ 11 This.name = name; 12 } 13 public void setAge(int age){ 14 This.age = age; 15 } 16 public void setName(char gender){ 17 This.gender = gender; 18 } 19 public String getName(){ 20 return name; 21 } 22 public int getAge(){ 23 return age; 24 } 25 public char getGender(){ 26 return gender; 27 } 28 public void showMessage(){ 29 System.out.println(“姓名:”+name+”,年齡:”+age+”,性別”+gender); 30 } } 31 //學生類 32 class classmate extends human{ 33 String school; 34 public classmate(String name1, int age1, char gender1, String school){ 35 name = name1; 36 age = age1; 37 gender = gender1; 38 this.school = school; 39 ... 40 }View Code
Java學習---JAVA的類設計