CoreJava(第四章)對象和類-01

一、對象和類

1.面向對象程序設計概述

1.1類之間的關係

依賴:(“uses-a”)

聚合:(“has-a”)

繼承:(“is-a”)

在這裏插入圖片描述

依賴:一個類的方法操縱另一個類的對象,我們就說一個類依賴於另一個類。

聚合:意味着類A的對象包含類B的對象。

繼承:類A擴展了類B,類A不但包含從類B繼承的方法,還會擁有一些額外的功能,如:“急單”繼承了“訂單”。

2.使用預定義類

2.1對象和對象的變量

要想使用對象, 就必須首先構造對象 , 並指定其初始狀態 。 然後 , 對對象應用方法 。

package com.eleven.oop;

import java.util.Date;

public class ObjectVariable {
	public static void main(String[] args) {
		/**
		 * 只使用一次:在這兩個對象中,構造對象只使用了一次
		 */
		// 構造一個Date對象
		System.out.println(new Date()); // Tue Jan 07 18:05:23 CST 2020
		// 返回字符串日期的描述
		System.out.println(new Date().toString()); // Tue Jan 07 18:05:23 CST 2020

		/**
		 * 多次使用:將對象放在一個變量中。 
		 * 其中一個對象變量並沒有實際包含一個對象, 而僅僅引用一個對象 。
		 *  任何對象變量的值都是對存儲在另外一個地方的一個對象的引用 。
		 */
		Date birthday = new Date();
		System.out.println(birthday);// Tue Jan 07 18:05:23 CST 2020
		// 定義了一個對象變量 deadline , 它 可 以 引 用 Date 類型的對象
		Date deadline;
		// 可以用新構造的對象初始化這個變量
		System.out.println(deadline = new Date()); // Tue Jan 07 18:05:23 CST 2020
		// 也讓這個變量引用一個已存在的對象
		System.out.println(deadline = birthday); // Tue Jan 07 18:05:23 CST 2020
		
		/**
		 * 
		 */
		// 表達式new Date()構造了一個 Date類型的對象,並且它的值是對新創建對象的引用。這個引用存儲在變量date中
		Date date = new Date();
		// 可以顯式地將對象變量設置爲null, 表明這個對象變量目前沒有引用任何對象 。
		date = null;	// 局部變量不會自動地初始化爲null, 而必須通過調用 new 或將它們設置爲 null進行初始化 。
	}

}
2.2LocalDate類

Java類庫分別包含兩個類:1.表示時間點的Date類;2.日曆表示法LocalDate類。

package com.eleven.oop;

import java.time.LocalDate;

/**
 * Date:用來表示時間點。
 * LocalDate:日曆表示法
 * 
 * @author sywangu
 *
 */
public class  Calendar {
	public static void main(String[] args) {
		// 構造一個新對象,表示構造這個對象時的日期
		System.out.println(LocalDate.now());	// 2020-01-07
		// 提供年、月、日來構造對應一個特定日期的對象
		System.out.println(LocalDate.of(1999, 12, 31));	// 1999-12-31
		// 通過LocalDate方法獲得年月日
		LocalDate newYears = LocalDate.of(1999, 12, 31);
		int year =  newYears.getYear();
		int month = newYears.getMonthValue();
		int day = newYears.getDayOfMonth();
		System.out.println("年:"+year+"月:"+month+"日:"+day);	// 年:1999月:12日:31
		
		LocalDate aThousandDaysLater = newYears.plusDays(1000);	// 表示1000天之後
		year = aThousandDaysLater.getYear();
		month = aThousandDaysLater .getMonthValue();
		day = aThousandDaysLater .getDayOfMonth();
		System.out.println("年:"+year+"月:"+month+"日:"+day);	// 年:2002月:9日:26
	}
}

2.3更改方法和訪問器的方法

需求:用一個應用LocalDate類的程序,顯示當前月的日曆,其中當前日要用*號標記出來。

思路:

1.先創建一個日曆對象

2.獲得當前的月和日

3.將日期設置爲這個月的第一天,並得到這一天是星期幾

4.打印日曆的表頭和第一行的縮頸

5.打印日曆的主體

package com.eleven.oop;

import java.time.DayOfWeek;
import java.time.LocalDate;

/**
 * 需求:用一個應用LocalDate類的程序,顯示當前月的日曆,其中當前日要用*號標記出來。
 * 思路:需要解決如何計算某月份的天數以及一個給定日期相應是星期幾。
 * 思路:
 * 1.先創建一個日曆對象
 * 2.獲得當前的月和日
 * 3.將日期設置爲這個月的第一天,並得到這一天是星期幾
 * 4.打印日曆的表頭和第一行的縮頸
 * 5.打印日曆的主體
 * 
 * @author sywangu
 *
 */
public class CalendarTest {
	public static void main(String[] args) {
		// 創建一個日曆對象
		LocalDate date = LocalDate.now();
		// 獲得當前的月和日
		int month = date.getMonthValue();	// 獲得當前的月
		int today = date.getDayOfMonth();	// 獲得當前的日
		date = date.minusDays(today - 1);	// 設置爲月初
		DayOfWeek weekDay = date.getDayOfWeek();
		int value = weekDay.getValue();	// 調用這個對象的 getValue 方法來得到星期幾的一個數值
		
		// 準備將日曆打印出來,先打印日曆的表頭和第一行的縮進
		System.out.println("Mon Tue Wed Thu Fri Sat Sun");
		for(int i = 1; i < value; i++) {
			//System.out.println("  ");
		}
		// 打印日曆的主體
		while(date.getMonthValue() == month) {
			System.out.printf("%3d",date.getDayOfMonth());
			if(date.getDayOfMonth() == today) {
				System.out.print("*");
			}else {
				System.out.print(" ");
			}
			date = date.plusDays(1);
			if(date.getDayOfWeek().getValue() == 1)
				System.out.println();
		}
		if(date.getDayOfWeek().getValue() != 1)
			System.out.println();
		
	}
}

輸出:
在這裏插入圖片描述

發佈了92 篇原創文章 · 獲贊 285 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章