【知識點】JAVA-對象和類
Java是一種面向對象的語言。由於具有面向對象特性的語言,Java支持以下基本概念 -
多態性
遺產
封裝
抽象化
類
對象
例
方法
消息解析
在本章中,我們會考慮的概念 - 類和對象。
對象-對象具有的狀態和行為。例如:狗有狀態-色,名,繁殖以及行為-搖尾,吠叫,吃。對象是類的一個實例。
類-類可以被定義為一個模板/藍圖,描述的行為/狀態的其類型支持的對象。
在Java對象
現在讓我們看看深入到哪些對象。如果我們考慮到現實世界中,我們可以找到我們,汽車,狗,人等各地的許多對象中的所有這些對象具有狀態和行為。
如果我們考慮一隻狗,那麼它的狀態是 - 名,品種,顏色和行為是 - 吠叫,搖尾,跑步。
如果比較與真實世界對象的軟體對象,他們有非常相似的特徵。
軟體對象也有一個狀態和行為。軟體對象的狀態存儲在欄位和行為是經由方法中。
因此,在軟體開發,方法上的一個對象和對象對對象的通信的內部狀態操作經由方法進行。
在Java類
類是從其創建單個對象的藍圖。
以下是一類的樣本。
例
publicclassDog{Stringbreed;intageC
Stringcolor;
voidbarking(){
}
voidhungry(){
}
voidsleeping(){
}}
一個類可以包含以下任何變數類型。
局部變數-裡面的方法,構造函數或塊定義的變數稱為局部變數。變數將被宣布,並在方法中初始化,當方法已經完成了變數將被銷毀。
實例變數-實例變數是一類內,但任何方法之外的變數。當類被實例化這些變數進行初始化。實例變數可以從內部的任何方法,構造函數或特定類別的塊訪問。
類變數-類變數是一類內聲明的變數,任何方法外,用static關鍵字。
一個類可以有任何數量的方法來訪問各種方法的價值。在上面的例子中,吠叫(),餓()和睡眠()是方法。
以下是一些需要尋找到Java語言類時要討論的重要議題。
構造函數
在討論關於類,最重要的子課題之一,是構造函數。每個類都有一個構造函數。如果我們沒有明確寫一個類的構造函數時,Java編譯器生成該類的默認構造函數。
每一個新的對象被創建時,至少有一個構造將被調用。構造的主要規則是,它們應該具有相同的名稱作為類。一個類可以有多個構造函數。
下面是一個構造函數的例子 -
例
public class Puppy { public Puppy() { } public Puppy(String name) { // 構造函數有一個參數name }}
Java還支持單實例類,你將能夠創建一個類只有一個實例。
注意-我們有兩種不同類型的構造函數。我們將在以後的章節中詳細討論構造函數。
創建對象
如前面提到的,一類為對象的藍圖。所以基本上,對象是從類創建的。在Java中,new關鍵字來創建新的對象。
有三個步驟,創建從一個類的對象時 -
宣言-與對象類型的變數名變數聲明。
實例化- 「新」關鍵字用於創建對象。
初始化- 「新」關鍵字後面是一個構造函數的調用。這個調用初始化了新的對象。
下面是創建對象的一個例子 -
例
publicclassPuppy{publicPuppy(Stringname){//構造函數有一個參數name
System.out.println("Passed Name is :"+name);
}
publicstaticvoidmain(String[]args){
// 以下語句創建一個對象myPuppy
PuppymyPuppy=newPuppy("tommy");
}}
如果我們編譯並運行上述程序,那麼會產生以下結果 -
產量
Passed Name is :tommy
訪問實例變數和方法
實例變數和方法是通過創建的對象訪問。要訪問一個實例變數,下面是完全合格的路徑 -
/*首先創建一個對象 */ObjectReference = new Constructor();/* 現在調用變數如下 */ObjectReference.variableName;/* 調用類方法如下 */ObjectReference.MethodName();
例
這個例子說明了如何訪問實例變數和一個類的方法。
publicclassPuppy{intpuppyAge;publicPuppy(Stringname){//構造函數有一個參數System.out.println("Name chosen is :"+name);}publicvoidsetAge(intage){puppyAge=age;}publicintgetAge(){System.out.println("Puppy s age is :"+puppyAge);returnpuppyAge;}publicstaticvoidmain(String[]args){/* 對象創建 */PuppymyPuppy=newPuppy("tommy");/* 調用類 設置小狗年齡*/myPuppy.setAge(2);/*調用另一個類來獲取小狗年齡*/myPuppy.getAge();/* 訪問實例變數如下*/System.out.println("Variable Value :"+myPuppy.puppyAge);}}
如果我們編譯並運行上述程序,那麼會產生以下結果 -
產量
源文件申報規則
正如本節的最後一部分,現在讓我們看看到源文件中的聲明規則。聲明類,當這些規則是必要的導入語句和包在源文件中的語句。
可以有每個源文件只有一個公共類。
源文件可以有多個非公共類。
公共類的名稱應該是源文件,以及應當由附加的名字的.java結尾。例如:類名是公共類Employee {}然後將源文件應儘可能Employee.java。
如果該類在包中定義,那麼包語句應該是源文件中的第一個語句。
如果import語句都存在,那麼他們必須在包語句和類聲明之間寫入。如果沒有包語句,則import語句應該是源文件中的第一行。
導入和包裝報表將意味著所有存在的源文件中的類。這是不可能的聲明不同的導入和/或包裝聲明源文件在不同的班級。
類具有幾個訪問級別和有不同類型的類;抽象類,final類等等。我們會解釋有關所有這些在訪問修飾符章。
除了上面提到的類型的類,Java也有一些特殊的類稱為內部類和匿名類。
Java包
在簡單的話,它是分類的類和介面的方式。在開發Java應用程序中,數以百計的類和介面將被寫入,因此分類這些類是必須的,以及使生活變得更加容易。
import語句
在Java中,如果全名,其中包括包和類名給出,那麼編譯器可以很容易地找到源代碼或類。import語句是給予適當的位置,編譯器無法找到特定類的方法。
例如,下面一行將要求編譯器載入目錄java_installation / JAVA / IO所有可用的類 -
import java.io.*;
一個簡單的案例研究
對於我們的案例研究中,我們將創建兩班。他們是員工和EmployeeTest。
首先打開記事本,並添加以下代碼。記住,這是Employee類和類是一個公共類。現在,保存名為Employee.java這個源文件。
Employee類有四個實例變數 - 姓名,年齡,名稱和薪水。這個類有一個明確定義構造函數,它需要一個參數。
例
import java.io.*;public class Employee { String name; int age; String designation; double salary; // Employee類的構造 public Employee(String name) { this.name = name; } // 將員工的年齡分配給可變員工年齡 public void empAge(int empAge) { age = empAge; } /* 將名稱制定給變數名稱*/ public void empDesignation(String empDesig) { designation = empDesig; } /*將薪水分配給變數salary*/ public void empSalary(double empSalary) { salary = empSalary; } /*輸出員工詳細信息*/ public void printEmployee() { System.out.println("Name:"+ name ); System.out.println("Age:" + age ); System.out.println("Designation:" + designation ); System.out.println("Salary:" + salary); }}
正如在本教程前面所提到的,從處理的主要方法開始。因此,為了使我們能夠運行這個Employee類應該有一個主要方法和對象應創建。我們將創建這些任務一個單獨的類。
以下是EmployeeTest類,它創建Employee類的兩個實例,並調用為每個對象分配值每個變數的方法。
在保存文件EmployeeTest.java下面的代碼。
importjava.io.*;publicclassEmployeeTest{publicstaticvoidmain(Stringargs[]){/* 使用構造函數創建兩個對象 */EmployeeempOne=newEmployee("James Smith");//史密斯EmployeeempTwo=newEmployee("Mary Anne");//瑪麗安尼// 為每個創建的對象調用方法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();}}
現在,編譯兩個類,然後運行EmployeeTest看到的結果如下: -
產量
C:> javac Employee.javaC:> javac EmployeeTest.javaC:> java EmployeeTestName:James SmithAge:26Designation:Senior Software EngineerSalary:1000.0Name:Mary AnneAge:21Designation:Software EngineerSalary:500.0


TAG:java學習吧 |
※詳談NVMe和NVMe-oF架構和知識點
※AE小知識點:Set Matte
※收藏:淺析SPDK技術和知識點
※Python數據類型知識點全解
※JSP和Servlet初級知識點總結
※C/C++語言 淺談C/C++內存管理知識點
※CANopen協議的幾個關鍵知識點
※手機屏幕知識點在這裡!LCD、OLED和Super AMOLED到底哪個更好?
※那些冷門的HTTP知識點
※JS基礎知識點 二
※外研版七年級下冊知識點整理 MODULE 7 My Past Life
※Django 與資料庫交互中的九個知識點
※iPhoneXR兩個知識點:有一個顏色邊框最窄的?
※收藏:詳解DPDK技術知識點
※備孕查出HPV陽性,必須get的11個知識點!
※python爬蟲知識點2-selenium的基礎知識點
※前阿里丁奇:學習MySQL「必知必會」的36個知識點
※MySQL「必知必會」的36個知識點
※WPF知識點分享
※關於BIOS你應該知道的知識點