本周主要学习了对象与类,对于有c++基础的我来说并不陌生,但要学会转换思维方式。
1.类
用java编写的所有代码都位于某个类里面。由类构造对象的过程称为创建类的实例。在java中,对象中的数据称为实例字段,操作数据的过程称为方法。作为一个类的实例,特定对象都有一组特定的实例字段值,这些值的集合就是这个对象的当前状态。
在java中,所有类都源自Object。另外,在拓展一个已有的类时,这个扩展后的新类具有被扩展类的全部属性和方法。
2.对象
对象有三个主要特性:
- 对象的行为——同一类的所有对象实例,由于支持相同的行为而具有家族式的相似性。对象的行为是用可调用的方法来定义的。
- 对象的状态——对象保存着的描述当前状况的信息。状态的改变需通过调用方法实现。
- 对象的标识——每个对象都有一个唯一的标识。
3.类之间的关系
- 依赖
- 聚合
- 继承
4.对象与对象变量
在java中,要用构造器构造新实例,构造器用来构造并初始化对象,名字与类名相同。
例如构造一个Date对象,需在构造器前面加上new操作符:
new Date()
此表达式构造了一个新对象,这个对象被初始化为当前的日期和时间。还可以将这个对象传递给一个方法:
System.out.println(new Date());
将对象放在一个变量中,可以让构造的对象多次使用:
Date birthday=new Date();
对象与对象变量之间存在着一个重要的区别,例:
Date deadline定义了一个对象变量deadline,可以引用Date类型的对象且不能在这个变量上使用任何Date方法。
对象变量并没有实际包含一个对象,它只是引用一个对象。在java中,任何对象变量的值都是对存储在另外一个地方的某个对象的引用。
注意:很多人错误地认为java中的对象变量就相当于c++中的引用。但在c++中没有null引用,而且引用不能赋值。可以把java中的对象变量看作类似于c++的对象指针。例:
Date birthday;
等同于
Date*birthday;
5.java类中的LocalDate类
LocalDate类就是用大家熟悉的日历表示法表示日期。应当使用静态工厂方法调用构造器。
例:
LocalDate.now()
会构造一个新对象,表示构造这个对象时的日期。
6.用户自定义类
在java中,最简单的类定义形式为:
class ClassName
{
field1
field2
...
constructor1
constructor2
...
method1
method2
...}
7.关于构造器:
- 构造器与类同名。
- 每个类可以有一个以上的构造器。
- 构造器可以有0个、1个或多个参数。
- 构造器没有返回值。
- 构造器总是伴随着new操作符一起调用。(与c++不同)
8.用var声明局部变量
在java中,可以用var关键字声明局部变量,而无须指定类型。例:
可以将
Employee harry=new Employee("Harry Hacker",5000,1989,10,1);
改写为
var harry =new Employee("Harry Hacker",5000,1989,10,1);
注意参数和字段必须声明。
9.隐式参数与显式参数
例:
public void raiseSalary(double byPercent)
{
double raise=salary*byPersent/100;
salary+=raise;}
显式参数显式地列在方法声明中,例如double byPercent。隐式参数没有出现在方法声明中,在每一个方法中,关键字this指示隐式函数。
注意:在java中,所以方法必须在类的内部定义。
本周学习结束



