类的三种关系
依赖 uses-a 聚合 has-a 继承 is-a
依赖
订单类使用账户类,因为订单类需要询问用户对象的信用状态 但是上品类不依赖账户类
因为商品类与账户类无关
依赖关系 就是一个类的方法操纵另一个类对象
将依赖类减少到最少降低耦合
聚合
一个类对象包含一部分另一个类对象
LocalDate类 制作日历
1获取当前月份和日期
2获取当前月第一天是星期几
3是星期几号就空几个空
4确定第一天位置 循环遍历每一天
如果是当前日期 用*表示
到周一重新换行
public class CalenderTest {
public static void main(String[] args) {
LocalDate date=LocalDate.now();
// 创建当前类对象
int month=date.getMonthValue();
int today=date.getDayOfMonth();
// 获取月和日
date=date.minusDays(today-1);
DayOfWeek weekdy=date.getDayOfWeek();
int value=weekdy.getValue();
// 当前天数减去 today-1
System.out.println("Mon Tue Wed Thu Fri Sat Sun");
for (int i=1;i<value;i++)
System.out.print(" ");
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();
}
}
}
类
用户自定义类
源文件必须与public类的名字相匹配
在一个源文件中 只能有一个公有类 但是可以有多个非公有类
设置实例域的值 应该提供以下三项
一个私有的实例域
一个公有的域访问器
一个公有的域修改器
不要编写返回引用可变对象的访问器方法
值可能通过其他方法被破坏
一个类的方法可以访问这个类的任何一个对象的私有域
{
return name.equals(other.name);
}
if(Tony.equals(Herry))
私有方法
辅助方法不应成为成为公有接口的一部分 例如 方法中的方法
final 修饰符 大多应用于基本数据类型 (构造对象是 就初始化的域)
静态域是共享的、
静态域进行初始化的代码比较复杂的时候 可以使用静态初始化块
static
{
}
静态方法是一种不想对象实时操作的方法,不能访问实例域
可以访问自身类中的静态域
Java 按值调用的参数传递方法
方法参数两种类型
1 基础数据类型
2 对象引用
一个方法不可能秀给一个基本数据类型的参数
一个方法肯依改变一个对象的参数状态
一个方法不能让对象参数引用一个新的对象
构造器 显示给域赋予初值
参数名:aName aSalary
this 指示隐式参数 也就是所构造的对象的参数
this.name=name;
this 也可以调用另一个构造器 同类中 在构造器的第一行
this()
初始化块在构造器前执行
包名:为公司注册域名的逆序形式
方法注释:
param 参数描述
return 返回类型描述
throws 抛出异常描述
类设计技巧:
1 数据私有
2 数据初始化 显示初始化 可以提供默认值
在所有构造器中设置默认值 不要依赖于系统的默认值
3 不要使用过多的基础类型 可以封装到另一个类中
4 不是所有域都需要独立的域访问器 和更改器
5 将指责过多的类进行分解
6 类名方法名可以提现他们的职责
7优先使用不可变量
网友评论