第四章
1.对象与类
1.1类:封装,关键在于绝对不能让类中的方法直接地访问其他类的实例域,所有类的父类Object。
1.2类与类之间的关系:
依赖(uses-a)一个类的方法操纵另一个类的对象,我们可以说一个类依赖另一个类。
聚合(has-a)一个对象包含另外一个对象。
继承(is-a)类a扩展类b,类a不但包含从类b继承的方法,还会拥有一些额外的功能。
在java中任何对象变量的值都是对存储在另外一个地方的一个对象的引用,new操作符的返回值也是一个引用。对实例域作出修改的方法成为更改器方法(mutator method)比如set和add方法,仅访问实例域而不进行修改的方法成为访问器方法(accessor method)比如get方法。
Java程序设计语言中方法参数的使用情况:一个方法不能修改一个基本数据类型的参数(即数值型和布尔型);一个方法可以改变一个对象参数的状态;一个方法不能让对象参数已用一个新的对象。
2.对象构造
重载:多个方法有相同的名字、不同的参数。返回值不属于方法签名的一部分,不能有两个名字相同,参数类型也相同却返回不同类型值的方法。
如果类中没有构造器,系统会提供一个无参构造,如果只有一个有参构造,不能使用无参构造创建对象。
类的参数名可以采用this.name 的形式访问实例域,this指示隐式参数,也就是被构造的对象。如果构造器的第一个语句形如this(...),这个构造器将调用同一个类的另一个构造。比如Android中自定义View 构造参数中,一个参数的调用两个参数的,两个参数调用三个参数的构造。
java有垃圾回收机制,可以为任何一个类添加finalize方法,这个方法将在垃圾回收器清楚对象之前调用。
3.包:类导入的两种形式,静态导入,包作用域,类路径,设置类路径,文档注释。
4.类的设计技巧
第五章
1.类、超类和子类:超类不能使用子类的方法,子类能使用父类的方法和属性(域)。在子类方法中第一行添加super 便可先调用父类的方法,也可调用超类的构造器,如果没有调用,将自动调用。
2.多态:①编译器会获得所有可能被调用的候选方法②编译器将查看调用方法时提供的参数类型,并进行匹配,这个过程称为重载解析③如果是private方法static方法final方法或者构造器,编译器会准确知道调用哪个方法,这个称为静态绑定④虚拟机预先为每个类创建了一个方法表,列出了签名和实际调用的方法,如果子类没有会在超类中查找。
3.final修饰类不可被继承,方法自动称为final方法,修饰方法不能被覆盖。String类也是final类。
强制类型转换:抽象类:实现类重写抽象方法,类不含抽象方法,也可以将类声明为抽象类,抽象类不能被实例化(不能new),但可以创建具体子类。
受保护访问:如果超类的属性设置为proteced,子类可以访问,其他类不可以。
4.Object所有类的超类:可以使用Object类型的变量引用任何类的对象。在java中只有基本数据类型不是对象。相等测试与继承:Java语言规范要求equals方法具有下面的特性,自反性、对称性、传递性、一致性。