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();
		
	}
}

输出:
在这里插入图片描述

发布了90 篇原创文章 · 获赞 284 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_41293896/article/details/103880909
今日推荐