Java 继承 - 学习面向对象编程的基础概念
1. Java 继承
1.1 简介
在面向对象编程中,继承是一种重要的概念。通过继承,子类可以继承父类的属性和方法。继承是面向对象编程中的重要概念之一,它允许我们创建新的类,并从现有的类中继承属性和方法。通过继承,我们能够实现代码重用和层次化设计,提高代码的可维护性和可扩展性。
1.2 什么是继承?
继承是一种通过创建新类来扩展已有类的机制。在继承中,新创建的类称为子类或派生类,而被继承的类称为父类或基类。子类继承了父类的属性和方法,同时还可以添加自己的属性和方法。这种机制使得子类能够重用父类的代码,并在此基础上进行扩展。
1.3 继承的基本语法
在 Java 中,使用关键字 extends
可以实现继承。子类会继承父类的非私有属性和方法,并可以重写父类的方法。
class 父类 {
// 父类的属性和方法
}
class 子类 extends 父类 {
// 子类的属性和方法
}
1.4 继承的特点
继承在面向对象编程中具有以下特点:
1.4.1 单继承
Java中只支持单继承,即一个子类只能继承自一个父类。这是由于Java语言设计的决策,目的是为了避免多继承带来的复杂性和潜在的冲突。
1.4.2 继承层次
通过继承,我们可以创建多层次的继承关系。子类可以被其他类所继承,从而形成一个继承层次。这种继承层次可以让我们更好地组织和管理代码,实现更高层次的抽象和复用。
1.4.3 方法重写
子类可以重写(覆盖)父类的方法,从而改变方法的实现。通过方法重写,我们可以根据子类的需要来定制方法的行为,实现多态性。
1.4.4 访问权限
子类可以访问父类中的非私有成员(属性和方法),并且可以根据需要重新定义访问权限。其中,public
成员可以被任何类访问,protected
成员可以被子类和同一个包中的类访问,default
成员(默认情况下没有修饰符)可以被同一个包中的类访问,而private
成员只能在当前类中访问。
2. 继承示例
比如我们用下面一个例子动物、猫狗鸡的关系来描述,
2.1 动物类 - Animal
首先,我们来定义一个基础的动物类 Animal
,它包含了一些基本的属性和方法。
public class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + "正在吃东西");
}
public void sleep() {
System.out.println(name + "正在睡觉");
}
}
在上述代码中,我们定义了 Animal
类,它有一个名为 name
的属性和两个方法 eat()
和 sleep()
。
2.2 猫类 - Cat
接下来,我们可以创建一个 Cat
类,它是 Animal
类的子类,并扩展了一些猫特有的属性和方法。
public class Cat extends Animal {
private String color;
public Cat(String name, String color) {
super(name);
this.color = color;
}
public void purr() {
System.out.println(color + "的" + name + "正在发出呜呜的声音");
}
}
在上述代码中,我们创建了 Cat
类,它继承了 Animal
类,并新增了一个名为 color
的属性和一个名为 purr()
的方法。
2.3 狗类 - Dog
同样地,我们可以创建一个 Dog
类,它也是 Animal
类的子类,并具有狗特有的属性和方法。
public class Dog extends Animal {
private String breed;
public Dog(String name, String breed) {
super(name);
this.breed = breed;
}
public void bark() {
System.out.println(name + "正在汪汪叫");
}
}
在上述代码中,我们定义了 Dog
类,它继承了 Animal
类,并新增了一个名为 breed
的属性和一个名为 bark()
的方法。
2.4 鸡类 - Chicken
最后,我们创建一个 Chicken
类,它也是 Animal
类的子类,并具有鸡特有的属性和方法。
public class Chicken extends Animal {
private int eggs;
public Chicken(String name, int eggs) {
super(name);
this.eggs = eggs;
}
public void layEggs() {
System.out.println(name + "已经下了" + eggs + "个蛋");
}
}
在上述代码中,我们定义了 Chicken
类,它继承了 Animal
类,并新增了一个名为 eggs
的属性和一个名为 layEggs()
的方法。
3. 总结
通过学习本文,我们了解了 Java 中的继承概念,并通过实例展示了动物类之间的继承关系。继承是面向对象编程中的重要概念,可以提高代码的复用性和可扩展性,对于构建复杂的软件系统非常有用。
希望本文对你理解 Java 继承有所帮助。如果你想了解更多关于 Java 编程的内容,可以继续阅读我的其他文章。