继承 -- extends
继承的好处和弊端:
好处:
提高复用性。-- 子类可以使用父类的非私有成员
提高可维护性。
让类与类产生了一个关系,是多态的前提。
弊端:
让类之间产生了一个强耦合的关系。
名词解释:
耦合:类与类的依赖关系。
内聚:类自己完成一些功能的能力。
java开发中原则:高内聚,低耦合。
Java中类的继承特点:
只允许单继承,不允许多继承,但是允许多层(多重)继承。
-- 避免了多继承中的调用不明确问题。
学顶层:顶层定义的是体系的共性的内容。
用底层:因为底层才是具体的实现,这里面的功能是最多的。
什么时候使用继承:
尽量不要为了使用部分功能而去使用继承,而继承体现的是“is a”的关系。
使用继承的时候注意事项:
继承只能继承父类中所有非私有的成员。
继承不能继承构造方法,但可以使用super关键字访问父类的构造方法。
继承中成员变量的关系:
变量的使用:就近原则
局部 -- 成员 -- 父类 -- 报错。
this和super关键字:
this代表本类对象的引用。理解:谁来调用我,我就代表谁。
super是一个关键字,代表父类在内存中的存储空间标识。(可以理解为父类对象的引用)
super和this的用法相似:
a:成员变量
this.变量 -- 使用本类的成员变量(也可以使用父类的成员变量,前提是子类中没有而且还得能继承下来)
super.变量 -- 父类的成员变量
b:构造方法
this(...) -- 根据参数的匹配,调用本类的其他构造方法。
super(...) -- 根据参数的匹配,调用父类的某个构造方法
-- 保证在子类初始化之前,先初始化父类的数据。
-- 在子类的每一个构造方法中,第一行都有一条默认的语句super();
-- 所有的类都直接或间接继承自Object类。Object类中只提供了无参构造。
注意事项:
this()和super()语句必须放在构造方法的第一行。
如果父类不存在空参构造,可以:
使用super(参数。。。)调用父类的某个带参构造。
使用this(参数。。。)调用本类的某个带参构造,而根本原因就是我们想访问的那个构造能够访问父类的构造。
c:成员方法
this.方法名() -- 调用本类的其他方法
super.方法名() -- 调用父类的方法
重载与重写:
重载Overload:java允许在一个类中,多个方法拥有相同的名字,但在名字相同的同时,必须有不同的参数,这就是重载。与返回值类型无关。
重写Override:
在子类中,方法声明(修饰符,返回值,方法名,参数列表)与父类相同的情况。目的是为了覆盖父类的方法主体或者对父类的方法做功能的扩展.
访问权限修饰符:private 默认(什么也不写) protected public
注意事项:
a:父类中私有方法是不能被重写
b:子类重写父类的方法不能缩小父类的访问权限,不能抛出比父类更多的异常。
c:静态只能重写静态。(类的特点)
|
|