java 是一门面向对象编程语言,其中两个重要的概念就是继承和封装。继承是指子类可以继承父类的属性和方法,而封装是指隐藏类的实现细节,只公开对外部有用的方法和属性。下面是关于 Java 继承和封装的详细文档。
继承是一种类与类之间的关系,可以让子类从父类继承属性和方法,避免重复编写代码,提高代码复用性和可维护性。
在 Java 中,使用关键字 extends
来实现继承。下面是定义一个父类和一个子类的示例代码:
// 父类
public class Animal {
public void eat() {
System.out.println("动物在吃东西");
}
}
// 子类
public class Dog extends Animal {
public void bark() {
System.out.println("狗在汪汪叫");
}
}
在上面的代码中,Dog
类继承了 Animal
类。可以看到,Dog
类中没有定义 eat()
方法,但是可以调用 Animal
类中的 eat()
方法。
子类可以重写(覆盖)父类的方法。例如,在上面的代码中,Dog
类可以重写 eat()
方法:
public class Dog extends Animal {
public void bark() {
System.out.println("狗在汪汪叫");
}
@Override
public void eat() {
System.out.println("狗在吃骨头");
}
}
注意,重写方法时,方法名、参数列表和返回值类型都必须与父类中的方法相同,可以使用 @Override
注解来标注这是一个重写方法。
子类可以使用 super
关键字来调用父类中的方法或构造函数。例如,在上面的代码中,Dog
类可以在 eat()
方法中调用父类的 eat()
方法:
public class Dog extends Animal {
public void bark() {
System.out.println("狗在汪汪叫");
}
@Override
public void eat() {
super.eat(); // 调用父类中的 eat() 方法
System.out.println("狗在吃骨头");
}
}
在上面的代码中,super.eat()
表示调用父类中的 eat()
方法。
Java 不支持多重继承,即一个子类只能有一个直接的父类。但是,Java 支持接口,一个类可以实现多个接口。