再看继承

继承在java中无处不在。继承有两种用法:第一种是通过扩展类,纯粹的创建继承关系;第二种则是以多态的方式访问一个类。关于继承,也有IS-A和HAS-A之说,IS-A是基于类继承或接口实现的,而HAS-A关系基于用法,并不是继承。
重写和重载是继承中最常见的。只要拥有一个继承超类方法的类就有机会重写该方法,但不能重写被标记为final和static的方法;来自超类的方法在子类中可以重载,重写和重载的规则如下:
[table]
| | 重载方法 | 重写方法 |
| 参数列表 | 必须修改 | 一定不能修改
| 返回类型 | 可以修改 | 除协变式返回外,不能修改|
|异常 | 可以修改 | 可以减少或删除,不能抛出心的或更广泛的检查异常|
| 访问 | 可以修改 | 一定不能执行更严格的限制(可以降低限制)|
| 调用 | 应用类型决定选择哪个重载版本(根据声明的参数类型),这发生在编译时。被调用的实际方法仍然是发生在运行时的虚拟方法调用,但是编译器已经知道所调用方法的签名。因此在运行时,参数匹配已经明确,只是还不知道该方法所在的实际类|对象类型(换句话说就是堆上实际实例的类型选择哪个方法,这发生在运行时)|
[/table]

对于java的程序来说,构造函数可以说是不可缺少的。即使不为类提供构函数,编译器也总是会插入一个默认的构造函数,它是一个无参数构造函数,并对super()进行无参数调用。如果在类中已有一个构造函数(无论该构造器参数如何),则永远都不会再生成默认的无参数构造函数了。构造函数有很多规则:不掉用构造函数就不能创建对象,每个类(包括抽象类),都至少有一个构造函数,构造函数名和其类名必须相同,构造哈双女户没有返回类型等等。构造函数永远不会被继承,因此也不能重写构造函数,它只能由另一个构造函数直接调用(使用super()和this()的调用)。
在本章的学习中,还碰到了耦合和内聚。耦合指一个类了解另一个类的程度;内聚指其中一个类具有单一、良好定义的角色或职责的程度。松散耦合是一种理想状态,他具有良好封装的类,把互相间的引用减至最少,并且限制了API的使用宽度,紧密耦合不是一种理想状态,他具有破坏松散耦合的类;高内聚是一种理想状态,其中类的成员支持单一、明确的角色或职责,低内聚不是一种理想状态,其成员支持多种、不明确的角色或职责。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值