本文为作者原创,如果转载,请标明出处。
在Java中有两种代码重用机制,组合和继承。
使用现有的类合成新的类,称为组合(composition),经常被视为“has-a”(拥有)关系。
继承则声明“新类和旧类相似”,通过 子类 extends 父类 表示,可在导出类中override基类方法,或者在导出类中添加新方法来使与基类产生差异。经常被视为“is -a”或“is-like-a”关系。
( override:重写,子类重写父类方法;overload:重载,有相同方法名,但参数类型或个数彼此不同)
常见问题(用一些案例验证结果):
1. Java中private的继承问题
private是可以被继承的,但是子类继承以后是无法访问。
Output:
Test1 Test2
2. Java能继承构造器方法吗?
Java是不能够继承构造器方法的
http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.8
Constructor declarations are not members. They are never inherited and therefore are not subject to hiding or overriding.
3.Java中子类可以继承和重写父类的静态方法吗?
Java中子类可以继承和重写父类的静态方法
Output:
Test if static function can be extended
Output:
Test2 if static function can be extended
4.Java子类构造器调用基类构造器
如果基类只有默认构造器(不管是系统提供的默认构造器,还是显示编写的无参构造器),则子类会调用父类的默认构造器。
Output:
Test1
Test2
如果没有默认的基类构造器,或者想调用一个带有参数的基类构造器,都必须用关键字super显示的编写调用基类构造器的语句,并且配以适当的参数列表。
Output:
Test1
Test2