1. 程式人生 > >JAVA(雜記四) -- 類與物件

JAVA(雜記四) -- 類與物件

東西太多,先寫在程式碼裡了,以後有時間整理

public class Main   
{  
    public static void main(String[] args)  
    {  
        Employee e1 = new Employee("lyy", 3800.0);
    	//	此處的e1等同於C++指標,new出來的物件返回的是一個引用 
        
        Employee e2 = e1;
        //	JAVA沒有預設的複製建構函式
        //	因此上一行的作用是e1和e2指向同一物件
        
        e1 = null;	
        //	可將物件變數設定為null,此時若呼叫方法將會出錯
        
        e1 = new Employee("qwe", 2400.0);
        //	不能使用 e1.Employee("asf", 10000.0); 來構造新物件
        //	構造器只能在初始化時使用,不能作為方法呼叫
        
        System.out.println(e1.getId());	// 1002
        System.out.println(e2.getId());	// 1002
        System.out.println(Employee.getNum());	// 2
    }  
} 

//	JAVA中方法、例項域的宣告和定義均在類中完成
//	JAVA不能為類過載運算子
class Employee
{
	//	靜態域
	//	只在該類第一次載入時初始化
	private static int nextId = 0;
	
	//	例項域
	//	可以在例項域宣告時初始化,也可由構造器初始化,也可由初始化塊進行初始化
	//	若都不進行初始化,則例項域自動初始化為0、null或false
	private String name = "";
	private double salary = 0;
	private final int id;
	
	//	初始化塊,首先執行,之後才會執行構造器
	//	不是必須的
	{
		nextId++;
		id = 1000+nextId;	
	}
	
	//	構造器
	//	JAVA沒有列表初始化
	public Employee(String aname, double asalary)
	{
		name = aname;
		salary = asalary;
	}
	//	構造器和方法均可以過載,要求名字相同,引數列表不同,而與返回型別無關
	//	JAVA可以在構造器中呼叫另一個構造器(c++不行)
	public Employee()
	{
		this("nameless", 3500.0);
	}
	
	//	域訪問器
	//	JAVA不提供const或者final字尾保證例項域不被更改
	//	注意,不要直接返回例項域中可變物件(如類的例項)的引用
	//	若該引用又使用域更改器( Setxx() ),則破壞了其封裝性
	//	應使用clone方法
	public String getName() { return name; }
	public double getSalary() { return salary; }
	public int getId() { return id; }	
	
	//這類靜態方法可以直接使用類名訪問,即Employee.getNum()
	public static int getNum() { return nextId; }
	public static void swap(Employee e1, Employee e2)
	{
		/**
		 * 該方法試圖交換2個引用,但是不會生效
		 * 因為傳入的引數相當於是C++的指標的拷貝
		 * 對指標指向的區域修改是有效的
		 * 但是對拷貝的指標做修改並不會影響到實參
		 */
		Employee tmp = e1;
		e1 = e2;
		e2 = tmp;
		//	由此可見,JAVA對物件採用的是“按值傳遞”
		//	即方法無法更改基本資料型別
		//	但方法可以改變物件引數的狀態,而無法使物件引用一個新物件
	}
	
	//	域更改器
	//	這裡的aname和asalary稱為顯式引數
	//	而這裡的name和salary稱為隱式引數,相等於this.name和this.salary
	public void setName(String aname) { name = aname; }
	public void setSalary(double asalary){ salary = asalary; }
	
	
	//	自定義類中也可有一個靜態main方法,一般用於單元測試
	//	Eclipse測試方法,右鍵類名,執行方式-JAVA應用程式,找到該類
	public static void main(String[] args)
	{
		Employee e1 = new Employee("skw", 4300.0);
        System.out.println(e1.getId());
        System.out.println(Employee.getNum());
	}
}

相關推薦

JAVA雜記 -- 物件

東西太多,先寫在程式碼裡了,以後有時間整理public class Main { public static void main(String[] args) { Employee e1 = new Employee("lyy

Java學習筆記物件

1. 類與物件: 從語義上理解,類是物件的模板,物件是類的例項,從語法上理解,類是一種資料型別,物件是這種型別的變數。在類的內部,方法可以直接訪問該類的私有變數,但對於外部的類,則不可。注意類中的欄位預設為private。 2. 成員方法的修飾: public,pri

快速學習Kotlin物件

Kotlin中的類 class Main{ } class Main1 : AppCompatActivity(){ } class Main2:AppCompatActivity(),View.OnClickListener{ override fun o

《瘋狂Java講義》學習筆記載入機制反射

1、類的載入、連線和初始化 JVM和類 同一個JVM的所有執行緒、所有變數都處於同一個程序裡,它們都使用該JVM程序的記憶體區 當系統出現一下集中情況時,JVM程序將被終止: 程式執行到最後正常結束 程式執行到使用Sytem.exit()或Runti

java面對物件--物件

類        Java語言把一組物件中相同屬性和方法抽象到一個Java原始檔就形成了類。        類是建立物件的模板,確定物件將會擁有的屬性和方法。        類是一種資料型別,是物件的型別(不同於int等基本型別:類具有方法)        類是物件的抽象化;

C++語言學習——對象

clas 進行 自身 ngs 符號表 方法 index clu 每一個 C++語言學習(四)——類與對象 一、構造函數(constructor) 1、構造函數簡介 C++語言中,構造函數是與類名相同的特殊成員函數。在類對象創建時,自動調用構造函數,完成類對象的初始化。類對象

c++學習總結——物件

一、心得感悟     c語言的課程學習後,開始c++的學習,首先就是學習類。在學習類時,類的使用與c語言有著極大的差別,一開始學習十分別扭。c語言的學習直接定義幾個形參、函式就可以寫程式了;而到了c++學習,關於類,首先必須定義類。具有相同性質和功能的東西構成的集合,通常歸成一

JAVA基礎第章-集合框架Collection篇 JAVA基礎第一章-初識java JAVA基礎第二章-java三大特性:封裝、繼承、多型 JAVA基礎第三章-物件、抽象、介面 記一次list迴圈刪除元素的突發事件!

 業內經常說的一句話是不要重複造輪子,但是有時候,只有自己造一個輪子了,才會深刻明白什麼樣的輪子適合山路,什麼樣的輪子適合平地! 我將會持續更新java基礎知識,歡迎關注。   往期章節: JAVA基礎第一章-初識java JAVA基礎第二章-java三大特性

JAVA基礎第五章-集合框架Map篇 JAVA基礎第一章-初識java JAVA基礎第二章-java三大特性:封裝、繼承、多型 JAVA基礎第三章-物件、抽象、介面 JAVA基礎第章-集合框架Collection篇

 業內經常說的一句話是不要重複造輪子,但是有時候,只有自己造一個輪子了,才會深刻明白什麼樣的輪子適合山路,什麼樣的輪子適合平地! 我將會持續更新java基礎知識,歡迎關注。   往期章節: JAVA基礎第一章-初識java

c++實戰開發詳解物件

一、面向物件程式設計介紹 (一)什麼是面向物件?      面向將系統看成通過互動作用來完成特定功能的物件的集合。每個物件用自己的方法來管理資料。也就是說只有物件內部的程式碼能夠操作物件內部的資料。

OOP物件

類對一類相同事物的抽象描述物件,屬於該對應類的一個例項物件的三個主要特徵:行為---可以對物件施加什麼操作或者方法狀態---當執行方法後,物件如何響應標識---如何辨別相同行為與狀態的不同物件基本定義格式[修飾符] class 類名{成員變數構造器方法}public clas

C++程式設計—— 物件

一、類及其例項化 1、定義類         類要先聲明後使用;不能宣告兩個名字相同的類,類是具有唯一識別符號的實體;在類中宣告的任何成員不能使用extern、auto、register關鍵字進行修飾;類中宣告的變數屬於該類,在某些情況下,變數也可以被該類的不同例項所共享

JAVA——第章——物件

接著上一篇部落格的總結,我已經學習並總結到了JAVA的類構造器,接著學習並總結。 四 . 將訊息傳給方法或構造器 引數即是將資料傳送給方法或構造器的媒介。形參是指方法宣告中的變數列表,而實參是方法呼叫時實際傳遞的值。呼叫方法時,所使用的實參與宣告中形參的型別

java學習筆記冒泡選擇排序

冒泡與選擇排序 一.氣泡排序BubbleSort 氣泡排序是一種比較經典的排序演算法,在很多時候都能夠用到,氣泡排序的原理是相鄰的兩個元素進行比較,小的放前面,大的放後面 我們可以看一下排序的過程 ps:圖片比較小大家點開看大圖 java原始

SpringMVC型轉換器

har public property springmvc gpo source 表達 resolv obj 為什麽頁面上輸入‘12’,可以復制給Handler方法對應的參數? 和是因為類型轉換器並不是可以將用戶提交的String,轉換為用戶需要的所有類型,此時,就需要自定

2物件

二、物件與類 物件(objects): 物件是類的一個例項,有狀態和行為。例如,一條狗是一個物件,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。 類(class): 類是一個模板,它描述一類物件的行為和狀態。 public class Dog{ St

JAVA基礎第三章-物件、抽象、介面 JAVA基礎第一章-初識java JAVA基礎第二章-java三大特性:封裝、繼承、多型

 業內經常說的一句話是不要重複造輪子,但是有時候,只有自己造一個輪子了,才會深刻明白什麼樣的輪子適合山路,什麼樣的輪子適合平地! 我將會持續更新java基礎知識,歡迎關注。   往期章節: JAVA基礎第一章-初識java JAVA基礎第二章-java三大特

JAVA基礎第三章-物件、抽象、介面

  前言      標題沒有看錯,真的是讓我寫個 bug!      剛接到這個需求時我內心沒有絲毫波瀾,甚至還有點激動。這可是我特長啊;終於可以光明正大的寫 bug 了

十七之間的關係

⼀. 類與類之間的依賴關係       ⼤千世界, 萬物之間皆有規則和規律。我們的類和物件是對⼤千世界中的所有事物進⾏歸類, 那事物之間存在著相對應的關係。 類與類之間也同樣如此,在⾯向物件的世界中 類與類中存在以下關係:     &n

java入門【八】物件

類 共性的一個集合 物件 某一個性的產物 物件也是類的一個例項 class組成  Field (成員,變數 ,屬性)變數的集合用來描述類 Method(方法)由物件呼叫 定義物件 宣告並例項化物件 類名稱 物件名稱 =