面向对象程序设计(object-oriented programming,OOP)是当今主流的程序设计范型。
类(class)是构造对象的模板或蓝图。由类构造(construct)对象的过程称为创建类的实例(instance)。
封装(encapsulation)是处理对象的一个重要概念。从形式上说,封装就是将数据和行为组合在一个包中,并对对象的使用者ui内藏具体的实现方式。对象中的数据称为实例字段(instance field)(字段是属于类的,它是会用public、private等关键字修饰的)。操作数据的过程称为方法(method)。
在Java中,所有的类都源自一个超类-Object。所有的类都扩展自这个Object类。
通过扩展一个类来建立另外一个类的过程称为继承。
类之间最常见的关系为依赖、聚合、继承。
一个类的方法使用或操纵另一个类的对象,我们就说一个类依赖于另一个类。A发生了变化引起B的变化,则B依赖于A。
聚合关系为一个对象包含一些Item对象。包含关系意味着类A的对象包含类B的对象(表示的是整体和部分的关系,整体与部分 可以分开)。例如车和轮胎。
继承关系:如果类A扩展类B,类A不但包含从类B继承的方法,还会有一些额外的功能。
使用构造器(constructor,或称构造函数)构造新实例。如new Date();
Date deadline;这定义了一个对象变量deadline,可以引用Date类型的对象。但是变量deadline不是一个对象,而且实际上它也能没有引用任何对象。此时不能使用任何Date方法。
所有的Java对象都存储在堆中。
Data类时间是用距离一个固定时间点的毫秒数表示的,这个时间点就是所谓的纪元(epooh)。它是UTC时间1970年1月1日00.00.0。UTC就是国际协调时间。
LocalDate类采用日历表示法表示日期。Date类用来表示时间点。
不要使用构造器来构造LocalDate类的对象,应使用静态工厂方法(factory method)。静态工厂方法简单地说,就是用一个方法来表示所有的构造函数。具体见https://zhuanlan.zhihu.com/p/357467564。
LocalDate.now()会构造一个新对象,表示构造这个对象的日期。
可以提供年、月、日来构造对应于一个特定日期的对象。
LocalDate newYearEve=LocalDate.of(1999,12,31);
可以用方法getYear,getMonthValue,getDayOfMonth得到年月日。getDayOfWeek得到周几。
plusDays方法会得到一个新的LocalDate,这个新日期对象则是距当前对象指定天数的一个新日期。
LocalDate aThousandDaysLater=newYearEve.plusDays(1000);
plusDays方法没有更改调用这个方法的对象,而是新生成一个对象。只访问对象而不修改对象的方法有时称为访问器方法。相反则是更改器方法。
关键字private确保只有类自身的方法能够访问实例字段。可以用public标记实例字段,但这是一种很不好的做法,破坏了封装。
实例字段可以本身就是对象。如private String s,s时String类对象。
构造器总是结合new运算符来调用。不能对一个已经存在的对象调用构造器来达到重新设置实例字段的目的。
Java10 可以用var关键字声明局部变量而无需指定类型,不过我们不会队数值类型使用var,如int,long,double。var关键字只能用于方法中的局部变量。
...