標籤:final 執行個體 回收 首字母 closed 封裝 open 日期 finalize
基礎知識
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的類設計