Core Java读书笔记 - 第5章 继承[未完成]

利用继承可以复用已有的类,并为新的类添加需要的特性(方法和域)。

5.1 类,超类和子类

“is-a”是继承的明显特征,Manager类和Employee之间存在明显的继承关系。定义类的继承使用关键字extends。

C++注释:Java中定义继承使用extends关键字,而在C++中使用冒号“:”,并且Java中所有的继承都是公共的,而C++中还存在私有,保护方式。

定义类时,将通用的方法在超类中定义,特殊的方法在子类中定义。

注:super访问父类的方法,super和this被看作引用,但是super却不同于this,super不能作为引用赋值给一个引用变量,只是表示一个应用父类方法的关键字而已。

C++注释:C++中访问父类方法是使用父类名+::的形式。

super在构造函数中的使用又有不同的含义。因为父类的私有域不能在子类的构造函数中赋值或者初始化,因而需要使用super()对父类的域进行初始化,当要使用这项功能时,必须将super()作为子类构造函数的第一条语句。如果子类没有显示调用父类的构造函数,则默认调用父类的无参构造函数。如果父类没有默认无参的构造函数,又没有在子类中调用其它含参的构造函数,在编译器将给出错误。

C++注释:Java中不需要将方法声明为虚拟方式,动态绑定是默认的处理方式。如果不需要某个方法具有虚拟特征,则将方法标记为final。

5.1.1继承的层次

5.1.6 抽象类

Java中为了提高程序的清晰度,包含一个或者多个抽象方法的类本身必须被声明为抽象的。抽象类中除了包含抽象方法,还是可以包含具体方法和域的。

C++注释:C++中,有一种在尾部用=0标记的抽象方法,被称为纯虚函数。定义纯虚函数的类是抽象类。C++中没有表示抽象类的关键字。

5.2 Object:所有类的超类

5.2.1 Equals方法:默认操作时判断两个对象是否有相同的引用。通常这没什么意义,大多数情况需要自己定义。


5.4 对象包装器与自动打包

所有的基本类型都有一个与之对应的类。这些类称为包装器(Wrapper),这中类是一旦构造就不允许改变其值的,并且这项类都是final的。

list.add(3); 会被自动打包为list.add(new Integer(3));这在C#中成为boxing,装箱。相反的,将Integer类赋值给int变量,会自动解包。

包装器的另一个好处是可以将一些基本方法放在包装器中,入parseInt。

5.7 反射

5.7.1 Class类:程序运行期间,Java运行时为所有对象维护一个称为运行时的的类型标识,所有Object类都有一个getClass()方法用于返回这个Class类型信息。Class类中最常用的方法是getName()用于返回这个类的名称(如果有包的话,也包括包的完成类名)。另外可以调用静态方法forName()获得类名对应的对象。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值