java學習(五)——類和對象

類:類是對一類事物共性的抽象。

1.類與類之間的關係:

            依賴(uses-a):如果一個類的方法操縱另一個類的對象,我們就說一個類依賴於另一個類,在實際的設計中,應儘可能地減少相互依賴的類,(讓類的耦合度最小)
            聚合(has-a):類A的對象包含類B的對象
            繼承(is-a):一個類擴展了另一個 類

 2.定義類
       格式:

                [修飾符] class 類名
                {
                //屬性定義格式: [修飾符] 屬性類型 屬性名 [屬性值];
                    屬性1;
                    屬性2;
                    ……
                
                /*構造器定義格式
                    [修飾符] 類名(參數列表)
                    {
                        方法體
                    }
                */
                    構造器1;
                    構造器2;
                    ……
                    
                /*方法定義格式:
                        [修飾符] 方法返回值類型 方法名(形參列表)
                        {
                            方法體
                        }
                */
                    方法1;
                    方法2;
                    ……
                }
                    

對象:一切客觀存在的事物都可以成爲對象。

1.1 對象的元素

            屬性(也稱實例域):對象有什麼,對於每個特定的對象都有一組特定的實例域值。這些值得集合就是這個對象的當前狀態
            方法:對象能做什麼,用於操作對象以及存取它們的實例域

1.2 對象的特點

        對象的行爲:可以對對象施加那些操作,或者對對象施加哪些方法
        對象的狀態:當施加哪些方法時,對象如和響應
        對象標識:如何辨別具有相同行爲與狀態的不同對象

類和對象的關係

        1.類是對象的模板,對象是類的一個實例
        2.由類構造對象的過程稱爲創建類的實例

使用預定義類

        1.構造某個類的對象,
        2.指定其初始狀態
        3.對對象應用方法

/*
Date類:它的對象描述一個時間點(精確到毫秒):表示距離一個固定時間點的毫秒數,這個時間點(所謂的紀元)爲1970年1月1日00:00:00
*/
import java.util.Date;
public class ObjectAndClass
{
	public static void main(String[] args)
	{
		//1.構造一個Date對象,這個對象被初始化爲當前的日期和時間
		new Date();
		System.out.println(new Date());
		
		//2.對象變量:只引用一個對象,並沒有實際包含一個對象
		Date t1;		//定義了一個對象變量,它可以引用Date類型的對象
		//2.1 初始化對象變量
			//2.1-1 用新構造的對象初始化這個變量
		t1=new Date;
			//2.1-2 引用一個已存在的對象
		Date t2=new Date();
		t1=t2;		//t1,t2引用同一個對象
		//注:new操作符返回值是一個引用
		Date t3=null;	//顯示的將對象變量設置爲null,表示這個對象變量現在沒有引用任何對象

                //3.使用該對象
                System.out.println(t2.toString());	    
	}
}
/*LocalDate是一個不可變的日期時間對象,表示日期,通常被視爲年月日。
*/
import java.time.LocalDate;
class ObjectAndClass
{
	public static void main(String[] args)
	{
		LocalDate d1=LocalDate.now();	//使用靜態工廠方法代表你調用構造器
		LocalDate d2=LocalDate.of(1999,12,31);	//根據所提供的年月日來構造一個特定日期的對象
		System.out.println(d1.getYear());
		System.out.println(d1.getMonthValue());
		System.out.println(d1.getDayOfMonth());
	}
}

構造器

        構造器是一種特殊的方法,用來構造並初始化對象
        構造器的名字與類名相同
        構造一個類的對象,需要在構造器前面加上 new 操作符

        定義了一個對象變量,它就可以引用這個類的實例對象,
        new 類();    //構造了一個類的對象,它的值是對新創建對象的引用,可以顯式地將對象變量設置爲null,表示這個對象變量目前沒用引用任何對象

使用自定義類

import java.time.LocalDate;
public class ObjectAndClass
{
	public static void main(String[] args)
	{
		Employee emp1=new Employee("葉葉",100,2018,10,23);

/*方法通常有兩類參數,第一類參數稱爲隱式參數(也稱方法調用的目標或接受者),出現在方法名前的調用對象,即emp1,第二類參數稱爲顯示參數:位於方法名後面的括號中。
*/
		System.out.println(emp1.getName());
		System.out.println(emp1.getSalary());
		System.out.println(emp1.getD());	
	}
}
class Employee
{
	private String name;
	private double salary;
	private LocalDate d;

	/*構造器與類名相同,構造器總是伴隨着new操作符的執行被調用
		1.如果在定義類時,沒有定義構造器,系統會調用一個無參構造器
		2.構造器沒有返回值
		3.每個類的構造器可以有多個
	*/
	public Employee(String n,double s,int year,int month,int day)
	{
		name=n;
		salary=s;
		d=LocalDate.of(year,month,day);
	}
	

	//由於它們只返回實例域值,因此被稱爲域訪問器,同理,可以更改實例域的公有方法被稱爲域更改器方法
	public String getName()
	{
		return name;
	}
	public double getSalary()
	{
		return salary;
	}
	public LocalDate getD()
	{
		return d;
	}
}

 

返回目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章