Java 是一種面向?qū)ο蟮恼Z言。作為一種具有面向?qū)ο筇卣鞯恼Z言
Java 包括以下幾項基本概念:
在這一章,我們將深入學(xué)習類和對象。
現(xiàn)在讓我們深入學(xué)習對象。如果我們考慮一條狗,那么它的狀態(tài)就是-名字,品種,顏色,它的行為就是汪汪,搖尾巴,跑。
如果我們將軟件中的對象和現(xiàn)實世界中的對象對比,那么我們將會發(fā)現(xiàn)他們有很多相似的特征。軟件中的對象也具有狀態(tài)和行為。軟件的狀態(tài)被儲存在文件中,它的行為通過方法來表現(xiàn)。
因此,在軟件發(fā)展過程中方法控制對象的內(nèi)在狀態(tài)并且對象和對象間的交流通過方法來完成。
類是有獨立的對象創(chuàng)造出的藍圖。
下面給出了一個類的例子:
public class Dog{
String breed;
int age;
String color;
void barking(){
}
void hungry(){
}
void sleeping(){
}
}
類可以包括以下的變量類型:
類可以有任意數(shù)量的方法來存取不同種類方法的值。在上面的例子中,barking()
,hungry()
和 sleeping()
是方法。
下面提到的是一些深入了解 Java 語言所必須討論的重要話題。
當我們討論類時,其中一個重要的子話題就是構(gòu)造器。每一個類都有一個構(gòu)造器。如果我們不單獨為一個類編寫構(gòu)造器那么 Java 的編譯器將會給這個類建立一個默認的構(gòu)造器。
每當一個新的對象被創(chuàng)建,至少一個構(gòu)造器將會被調(diào)用。構(gòu)造器的一個最主要的原則就是他們必須和類有同樣的名字。一個類可以有不止一個構(gòu)造器。
下面給出了一個構(gòu)造器的例子:
public class Puppy{
public Puppy(){
}
public Puppy(String name){
// This constructor has one parameter, name.
}
}
在需要只創(chuàng)建一個類的實例的時,Java 也支持單例。
如前所述,類為對象提供了藍圖。因此基本來說一個對象是從一個類中創(chuàng)造出來的。在 Java 中,新的關(guān)鍵詞被用來創(chuàng)造新的對象。當我們從類中創(chuàng)造對象時需要三步:
下面給出了一個創(chuàng)造對象的例子:
public class Puppy{
public Puppy(String name){
// This constructor has one parameter, name.
System.out.println("Passed Name is :" + name );
}
public static void main(String []args){
// Following statement would create an object myPuppy
Puppy myPuppy = new Puppy( "tommy" );
}
}
如果編譯并運行上述程序,那么將輸出下列結(jié)果:
Passed Name is :tommy
實體變量和方法是通過創(chuàng)造對象來訪問的。為了訪問一個實體變量完全有效的路徑應(yīng)該如下所示:
/* First create an object */
ObjectReference = new Constructor();
/* Now call a variable as follows */
ObjectReference.variableName;
/* Now you can call a class method as follows */
ObjectReference.MethodName();
這個例子解釋了如何存取類的實體變量和方法:
public class Puppy{
int puppyAge;
public Puppy(String name){
// This constructor has one parameter, name.
System.out.println("Passed Name is :" + name );
}
public void setAge( int age ){
puppyAge = age;
}
public int getAge( ){
System.out.println("Puppy's age is :" + puppyAge );
return puppyAge;
}
public static void main(String []args){
/* Object creation */
Puppy myPuppy = new Puppy( "tommy" );
/* Call class method to set puppy's age */
myPuppy.setAge( 2 );
/* Call another class method to get puppy's age */
myPuppy.getAge( );
/* You can access instance variable as follows as well */
System.out.println("Variable Value :" + myPuppy.puppyAge );
}
}
如果我們編譯運行上述程序,那么將會產(chǎn)生如下結(jié)果:
Passed Name is :tommy
Puppy's age is :2
Variable Value :2
在本節(jié)的最后一部分讓我們學(xué)習一下源文件聲明規(guī)則。當在源文件中聲明類,輸入和打包語法時,這些規(guī)則是十分重要的。
.java
為后綴。舉例來說:類的名稱是 public class Employee{}
,那么源文件就應(yīng)該是 Employee.java
。 簡而言之,就是一種分類類和接口的一種方法。當用 Java 開發(fā)程序時,數(shù)百個類和接口會被編寫,因此分類這些類不但是必須的而且也是會使問題變得容易的。
在 Java 中,如果給出包括封裝和類的名稱的全限定名,那么編譯器很容易定位到源類和源代碼。Import 語法是給編譯器尋找特定類的適當位置的一種方法。
舉例來說,下面這行語句將會要求編譯器去裝載 java_installation/java/io
路徑下的所有可用的類:
import java.io.*;
在我們的案例學(xué)習中,我們將創(chuàng)造兩個類。他們是 Employee 和 EmployeeTest。
首先打開記事本輸入下列代碼。記得這個是 Employee 類,這個類是公共類。現(xiàn)在以 Employee.java 為文件名保存這個源文件。
這個 Employee 類包括四個實體變量姓名(name),年齡(age),職位(designation)和薪水(salary)。這個類有一個確定的需要參數(shù)的的構(gòu)造器。
import java.io.*;
public class Employee{
String name;
int age;
String designation;
double salary;
// This is the constructor of the class Employee
public Employee(String name){
this.name = name;
}
// Assign the age of the Employee to the variable age.
public void empAge(int empAge){
age = empAge;
}
/* Assign the designation to the variable designation.*/
public void empDesignation(String empDesig){
designation = empDesig;
}
/* Assign the salary to the variable salary.*/
public void empSalary(double empSalary){
salary = empSalary;
}
/* Print the Employee details */
public void printEmployee(){
System.out.println("Name:"+ name );
System.out.println("Age:" + age );
System.out.println("Designation:" + designation );
System.out.println("Salary:" + salary);
}
}
正如本指導(dǎo)之前所述,編程從主函數(shù)開始。因此,我們?yōu)榱诉\行這個 Employee 類就應(yīng)當建立主函數(shù)和類。我們將分別為這些任務(wù)創(chuàng)建類。
下面所給的是 EmployeeTest 類,這個類創(chuàng)建了兩個 Employee 類的實例,并且為每個對象調(diào)用方法從而給每個變量賦值。
在 EmployeeTest.java 文件中保存下列代碼
import java.io.*;
public class EmployeeTest{
public static void main(String args[]){
/* Create two objects using constructor */
Employee empOne = new Employee("James Smith");
Employee empTwo = new Employee("Mary Anne");
// Invoking methods for each object created
empOne.empAge(26);
empOne.empDesignation("Senior Software Engineer");
empOne.empSalary(1000);
empOne.printEmployee();
empTwo.empAge(21);
empTwo.empDesignation("Software Engineer");
empTwo.empSalary(500);
empTwo.printEmployee();
}
}
現(xiàn)在編譯兩個類然后運行 EmployeeTest,你將會看到如下結(jié)果:
C :> javac Employee.java
C :> vi EmployeeTest.java
C :> javac EmployeeTest.java
C :> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0
下一章我們將討論 Java 中的基本數(shù)據(jù)類型以及他們在開發(fā)應(yīng)用程序時如何應(yīng)用。