什么是继承
在Java中,继承是面向对象编程的一个基本特性。它允许我们定义一个新类,它从另一个已经存在的类继承其属性和方法。被继承的类称为父类或超类,新定义的类称为子类。
语法:
public class 子类名 extends 父类名{
}
继承子类的特点
- 子类可以有父类的内容
- 子类还可以有自己的内容
继承的好处和弊端
好处: 提高了代码的复用性(多个类相同的成员可以放到同一个类中) 提高了代码的维护性(如果方法的代码需要修改,修改一处即可)
弊端: 继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子类实现也不得不跟着变化,削弱了子类的独立性。
构造方法访问特点
子类中所有的构造方法默认都会访问父类中无参的构造方法
因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。
如果父类中没有无参构造方法,只有带参构造方法,该怎么办呢
通过使用super关键字去显示的调用父类的带参构造方法
在父类中自己提供一个无参构造方法
super关键字
super关键字的用法和this关键子用法相似
this:代表本类对象的引用(this关键字指向调用该方法的对象,一般我们是在当前类中使用this关键字,所以我们常说this代表本类对象的引用)
super:代表父类存储空间的标识(可以理解为父类对象引用)
什么是方法重写
子类中出现了和父类一模一样的方法声明
方法重写注意事项
私有方法不能被重写
子类方法访问权限应该高于父类方法访问权限
继承的注意事项
Java中类只支持单继承,不支持多继承
Java中类支持多层继承
例子
使用extends关键字来继承一个类。
public class ParentClass {
// ...
}
public class ChildClass extends ParentClass {
// ...
}
子类可以添加新的属性和方法。
public class ParentClass {
public void parentMethod() {
// ...
}
}
public class ChildClass extends ParentClass {
public void childMethod() {
// ...
}
}
子类可以重写(override)父类的方法。
public class ParentClass {
public void someMethod() {
// Parent implementation
}
}
public class ChildClass extends ParentClass {
@Override
public void someMethod() {
// Child implementation
}
}
子类可以实现父类的抽象方法。
public abstract class ParentClass {
public abstract void someMethod();
}
public class ChildClass extends ParentClass {
@Override
public void someMethod() {
// Child implementation
}
}
子类可以声明自己的构造器,但是必须在子类构造器中调用父类的构造器。
public class ParentClass {
public ParentClass() {
// ...
}
}
public class ChildClass extends ParentClass {
public ChildClass() {
super(); // 调用父类构造器
// ...
}
}
Java不支持多重继承,但一个类可以实现多个接口,从而获取多个接口的特性。
public interface Interface1 {
// ...
}
public interface Interface2 {
// ...
}
public class ChildClass implements Interface1, Interface2 {
// ...
}