有书共读】java核心技术卷1--第4章
======================java核心技术卷1第4章-------对象与类===========
1 类与对象
2 静态域与静态方法
3 成员与方法
4 对象构造
5 包
6 类设计技巧
===========================================================
1 类与对象
1.1 类:类是构造对象的模板。通俗点说类就是具有相同属性和相同行为的一类事物。
1.2 对象:是类的一个实例,通过类构造产生
1.3 对象具有三个主要特新:
行为:可以通过对象施加那些操作,可调用哪些方法和函数
状态:调用那些方法时,对象如何响应
标识:如何区分有相同方法与状态的不同对象
1.4 类之间的关系:
依赖(uses-a):一个类依赖另一个类,例如类A中的方法需要用到类B中的属性
聚合(has-a):一个类的对象包含另一个类的对象
继承(is-a):一个类是继承另一个类而来,如:鱼--继承-->动物
2 静态域与静态方法
2.1 静态域:其修饰符为static,每个类只有一个这样的域。其修饰的成员变量属于类本身,
不属于每一个对象,即所有的对象都共享这一个成员变量
静态常量:对于一个类公共的成员,可将其定义成静态常量,不允许对象对其进行修改
定义形式如: public static final double PI=3.1415926;
2.2 静态方法:静态方法不能向对象实施操作,即不能通过对象进行调用,可直接通过类名进行调用
如:Math.pow(x,a);
使用静态方法的两种情况:
a) 不需要访问对象状态,所需参数通过显示参数提供,如Math.pow;
2.3 静态变量与静态方法小总结:
a) 静态方法只能调用静态变量
浅析一下原因:类构造器对类进行初始化时,为类开辟了一块static域,并把静态成员存放到该位置。
非静态方法是通过实例去调用的,故调用静态方法时,相应的域和成员已经初始化完毕,
c) 静态方法不能用 this,super 调用
d) 构造方法和局部变量不能声明为 static
3 成员与方法
3.1 成员就是类的一些属性,方法即类的一些行为
3.2 方法参数:在C++中参数可以通过值传递,引用传递;在Java中,参数都是按值进行传递,
方法得到的参数都是一个拷贝,并且犯法不能修改传递给他的任何参数变量的内容,
方法内修改的是拷贝得到的对象。
4 对象构造
4.1 重载
一个类至少有一个构造器,也有可能有多个构造器,这中特征成为重载;
重载特征为:方法名相同,参数不同,包含参数个数、参数类型
另外一种形式可通过在抽象类中对方法定义,在子类中实现方法
4.2 默认域初始化
若构造器没有显示给域赋予初始值,则会被自动符为默认值,数值为0,布尔型为false,对象引用为null
4.3 无参构造器
对象由无参构造函数创建时,其状态被设置为默认值,若类中没有编写任何的构造器,系统会默认生成一个无参构造器
4.4 显示域初始化
在执行构造器前,可以执行赋值操作,为实例域设置一个有意义的初始值
4.5 初始化块
对类进行初始化数据域的方法:构造器设置,在声明中赋值,初始化块中赋值
初始化块与构造器执行顺序:
静态初始化块-->非静态初始化块-->构造器
5 包
Java中的包就是一个文件夹,通常对于功能相似的类会放到同一个文件夹中
5.1 类导入
Java中的类可以使用所属包中的所有类,导入包后在使用类时就无需写包的全名,
5.2 静态导入
6 类设计技巧
6.1 保证数据私有,不要破坏封装性
6.2 对数据初始化,尽管系统会给一个默认值;在C++中可以避免如野指针之类的问题
6.3 不要在类中使用过多的基本类型
6.4 不是所有的域都需要独立的域访问器和更改器
6.5 对于职责过多的类进行分解
6.6 类名和方法名要能够体现它们的职责,即名称要与功能匹配
6.7 优先使用不可变的类,
#设计##Java#
1 类与对象
2 静态域与静态方法
3 成员与方法
4 对象构造
5 包
6 类设计技巧
===========================================================
1 类与对象
1.1 类:类是构造对象的模板。通俗点说类就是具有相同属性和相同行为的一类事物。
1.2 对象:是类的一个实例,通过类构造产生
1.3 对象具有三个主要特新:
行为:可以通过对象施加那些操作,可调用哪些方法和函数
状态:调用那些方法时,对象如何响应
标识:如何区分有相同方法与状态的不同对象
1.4 类之间的关系:
依赖(uses-a):一个类依赖另一个类,例如类A中的方法需要用到类B中的属性
聚合(has-a):一个类的对象包含另一个类的对象
继承(is-a):一个类是继承另一个类而来,如:鱼--继承-->动物
2 静态域与静态方法
2.1 静态域:其修饰符为static,每个类只有一个这样的域。其修饰的成员变量属于类本身,
不属于每一个对象,即所有的对象都共享这一个成员变量
静态常量:对于一个类公共的成员,可将其定义成静态常量,不允许对象对其进行修改
定义形式如: public static final double PI=3.1415926;
2.2 静态方法:静态方法不能向对象实施操作,即不能通过对象进行调用,可直接通过类名进行调用
如:Math.pow(x,a);
使用静态方法的两种情况:
a) 不需要访问对象状态,所需参数通过显示参数提供,如Math.pow;
b) 只需要访问类的静态域
a) 静态方法只能调用静态变量
b) 静态方法不能调用非静态方法,非静态方法可以调用静态方法。
非静态方法是通过实例去调用的,故调用静态方法时,相应的域和成员已经初始化完毕,
静态方法调用非静态方法,对应的实例可能没有完成初始化,非静态方法或需要的成员变量并未加载进来
d) 构造方法和局部变量不能声明为 static
3 成员与方法
3.1 成员就是类的一些属性,方法即类的一些行为
3.2 方法参数:在C++中参数可以通过值传递,引用传递;在Java中,参数都是按值进行传递,
方法得到的参数都是一个拷贝,并且犯法不能修改传递给他的任何参数变量的内容,
方法内修改的是拷贝得到的对象。
4 对象构造
4.1 重载
一个类至少有一个构造器,也有可能有多个构造器,这中特征成为重载;
重载特征为:方法名相同,参数不同,包含参数个数、参数类型
另外一种形式可通过在抽象类中对方法定义,在子类中实现方法
4.2 默认域初始化
若构造器没有显示给域赋予初始值,则会被自动符为默认值,数值为0,布尔型为false,对象引用为null
4.3 无参构造器
对象由无参构造函数创建时,其状态被设置为默认值,若类中没有编写任何的构造器,系统会默认生成一个无参构造器
4.4 显示域初始化
在执行构造器前,可以执行赋值操作,为实例域设置一个有意义的初始值
4.5 初始化块
对类进行初始化数据域的方法:构造器设置,在声明中赋值,初始化块中赋值
初始化块与构造器执行顺序:
静态初始化块-->非静态初始化块-->构造器
5 包
Java中的包就是一个文件夹,通常对于功能相似的类会放到同一个文件夹中
5.1 类导入
Java中的类可以使用所属包中的所有类,导入包后在使用类时就无需写包的全名,
5.2 静态导入
静态导入用于导入类的静态域和静态方法,在源文件顶部导入类,使用该类的静态方法即静态域则不必加类名
6.1 保证数据私有,不要破坏封装性
6.2 对数据初始化,尽管系统会给一个默认值;在C++中可以避免如野指针之类的问题
6.3 不要在类中使用过多的基本类型
6.4 不是所有的域都需要独立的域访问器和更改器
6.5 对于职责过多的类进行分解
6.6 类名和方法名要能够体现它们的职责,即名称要与功能匹配
6.7 优先使用不可变的类,
#设计##Java#