Java中的继承与多态
发布时间: 2023-12-13 04:39:17 阅读量: 36 订阅数: 37
# 1. 简介
## 1.1 什么是继承
## 1.2 什么是多态
在本章中,我们将介绍继承与多态的概念,并对其进行详细解释。
### 2. 继承的基本概念与语法
继承是面向对象编程中的一个重要概念,它是通过一个已存在的类创建新的类,新的类可以继承原有类的属性和方法。继承的目的是为了提高代码的重用性和扩展性。
#### 2.1 类与对象
在开始学习继承之前,先了解一下类和对象的概念。类是一种抽象的概念,它定义了一类对象所共有的属性和方法。而对象则是类的实例,它具有类定义的属性和方法。
在Java中,类通过关键字`class`来定义。下面是一个简单的类的定义示例:
```java
public class Animal {
String name;
int age;
public void run() {
System.out.println(name + " is running.");
}
}
```
上面的代码定义了一个名为`Animal`的类,它具有一个`name`属性和一个`age`属性,以及一个`run`方法。
我们可以通过创建对象来使用这个类,示例如下:
```java
public class Main {
public static void main(String[] args) {
Animal dog = new Animal();
dog.name = "旺财";
dog.age = 3;
dog.run(); // 输出:旺财 is running.
}
}
```
上面的代码中,我们创建了一个名为`dog`的`Animal`对象,并为其设置了`name`和`age`属性,然后调用了`run`方法。
#### 2.2 定义一个父类
在继承中,我们需要至少存在两个类:父类(也称为基类或超类)和子类。父类是已经存在的类,而子类则是通过继承父类来创建的。
父类通常包含一些通用的属性和方法,而子类可以通过继承父类来获取这些属性和方法,并可以在此基础上进行扩展。下面是一个父类的示例:
```java
public class Animal {
String name;
int age;
public void run() {
System.out.println(name + " is running.");
}
public void eat() {
System.out.println(name + " is eating.");
}
}
```
上面的代码中,我们在`Animal`类中定义了一个`run`方法和一个`eat`方法。
#### 2.3 子类的创建与继承
子类的创建通过使用关键字`extends`来实现。子类继承了父类的属性和方法,并可以在此基础上进行拓展或修改。下面是一个子类的示例:
```java
public class Dog extends Animal {
public void bark() {
System.out.println(name + " is barking.");
}
}
```
在上面的示例中,我们创建了一个名为`Dog`的子类,它继承了`Animal`类,并在此基础上扩展了一个`bark`方法。
#### 2.4 继承的访问修饰符
在继承中,子类可以继承父类的属性和方法,但有时候我们需要控制子类对父类的访问权限。在Java中,可以使用访问修饰符来控制继承的权限。常用的访问修饰符有四个:
- `public`:可访问被继承的属性和方法;
- `protected`:可访问被继承的属性和方法(仅限于同一个包中的子类);
- `default`:可访问被继承的属性和方法(仅限于同一个包中的类);
- `private`:不可访问被继承的属性和方法。
下面是一个使用访问修饰符的示例:
```java
public class Animal {
public String name;
protected int age;
String color; // 默认为default访问修饰符
private boolean isAlive;
public void run() {
System.out.println(name + " is running.");
}
protected void eat() {
System.out.println(name + " is eating.");
}
void sleep() {
System.out.println(name + " is sleeping.");
}
private void breathe() {
System.out.println(name + " is breathing.");
}
}
public class Dog extends Animal {
public void showInfo() {
System.out.println(name); // 可访问继承的public属性
System.out.println(age); // 可访问继承的protected属性
System.out.println(color);
```
0
0