1关:继承及方法重写;第2关 抽象类;第3关 接口及实现类定义
时间: 2023-12-06 07:03:17 浏览: 89
1关:继承及方法重写
继承是面向对象编程中的一种重要的概念,它允许我们创建一个新类,从现有的类中继承属性和方法。子类可以继承父类中的公共方法和属性,并且可以重写父类中的方法来实现自己的功能。
方法重写是指子类重写父类中已经存在的方法。子类可以根据自己的需要重新定义一个父类中的方法,使其具有不同的行为。在子类中重写方法时,方法名、参数列表、返回类型必须与父类中被重写的方法完全相同。
例如,我们创建一个父类Animal和一个子类Dog,子类Dog继承了父类Animal中的属性和方法,并且重写了其中的方法:
```java
public class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + " is eating.");
}
}
public class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
public void eat() {
System.out.println("The dog is eating bones.");
}
}
```
在上面的例子中,我们定义了一个Animal类,它有一个属性name和一个方法eat,然后我们创建了一个Dog类,它继承了Animal类,并且重写了eat方法。在Dog类中的eat方法中,我们打印出了一条狗在吃骨头的语句。
2关:抽象类
抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类中可以包含抽象方法和具体方法。抽象方法是一种没有实现的方法,它只有方法的声明,没有方法体,而具体方法则是有实现的方法。
抽象类通常用于定义一些抽象的概念,它可以被子类继承并实现。抽象类不能被实例化,只能被用作父类。
例如,我们可以定义一个抽象类Animal,其中包含一个抽象方法eat:
```java
public abstract class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract void eat();
}
```
在上面的例子中,我们定义了一个抽象类Animal,其中包含了一个抽象方法eat,它没有方法体,只有方法的声明。这个抽象类不能被实例化,只能被继承。
3关:接口及实现类定义
接口是一种规范或者一种约定,它定义了一个类应该做什么,但并不规定类应该怎么做。接口中只包含方法的声明,没有方法的实现,它是一种纯粹的抽象概念。
实现类是实现接口的类,它们必须实现接口中的所有方法。实现类可以实现多个接口,这样就可以同时具有多种功能。
例如,我们可以定义一个接口Animal,其中包含一个方法eat:
```java
public interface Animal {
void eat();
}
```
在上面的例子中,我们定义了一个Animal接口,其中只包含一个方法eat,没有方法的实现。这个接口可以被其他类实现。
然后我们可以创建一个实现类Dog,它实现了Animal接口:
```java
public class Dog implements Animal {
@Override
public void eat() {
System.out.println("The dog is eating bones.");
}
}
```
在上面的例子中,我们创建了一个实现类Dog,它实现了Animal接口中的eat方法,并且实现了自己的功能,即打印出一条狗在吃骨头的语句。
阅读全文