java子类和父类的创建
时间: 2023-08-08 12:08:40 浏览: 103
在 Java 中,要创建子类需要使用 `extends` 关键字来继承父类。下面是一个简单的例子:
```java
public class Animal {
public void eat() {
System.out.println("Animal is eating.");
}
}
public class Dog extends Animal {
public void bark() {
System.out.println("Dog is barking.");
}
}
// 在主函数中
Dog dog = new Dog();
dog.eat(); // 继承父类的方法
dog.bark(); // 子类自己的方法
```
在上面的例子中,我们定义了一个 `Animal` 父类和 `Dog` 子类。使用 `extends` 关键字将 `Dog` 类继承自 `Animal` 类。这样,`Dog` 类就可以使用 `Animal` 类中的方法和属性。我们还定义了 `Dog` 类自己的方法 `bark()`。在主函数中,我们实例化了一个 `Dog` 对象,然后调用了继承自父类的 `eat()` 方法和子类自己的 `bark()` 方法。
需要注意的是,Java 中一个子类只能继承一个父类,这是单继承机制。但是,Java 中允许多层继承,即一个类可以继承自另一个类的子类。这就是多层继承。
相关问题
java 子类继承父类, 父类调用子类的方法
在Java中,当一个子类继承自一个父类时,如果子类覆盖了(也称为重写了)父类的某个方法,那么即使父类通过引用指向的是子类的对象,它依然可以调用该方法。这是因为在父类中调用的方法实际上是根据实际的对象类型来确定的,这正是多态性的体现。
例如,假设有一个`Animal`父类,其中包含一个`sound()`方法。然后有一个`Dog`子类,重写了`sound()`方法,返回"汪汪"的声音。当我们创建一个`Dog`类型的对象,并将其赋值给`Animal`类型的变量时,如果我们从这个`Animal`变量上调用`sound()`,实际上会执行`Dog`子类的`sound()`方法,输出"汪汪"。
```java
class Animal {
public void sound() {
System.out.println("默认声音");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("汪汪");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // 父类引用指向子类对象
myDog.sound(); // 调用的是Dog子类的sound方法
}
}
```
java子类重载父类方法
在Java中,子类可以通过重载(overriding)父类的方法来改变父类方法的行为。要实现这一点,子类必须定义一个与父类方法名称、参数类型和返回类型完全相同的方法,并且在方法体中实现子类特有的逻辑。
例如,假设我们有一个父类Animal和一个子类Dog:
```java
public class Animal {
public void move() {
System.out.println("Animal is moving");
}
}
public class Dog extends Animal {
public void move() {
System.out.println("Dog is running");
}
}
```
在上面的例子中,子类Dog重载了父类Animal的move()方法,并且在方法体中输出了不同的信息。当我们创建一个Dog对象并调用它的move()方法时,输出的信息将是“Dog is running”。
还需要注意的是,如果子类想要调用父类的重载方法,可以使用super关键字。例如,在子类Dog的move()方法中,我们可以使用super.move()来调用父类Animal的move()方法。
```java
public class Dog extends Animal {
public void move() {
super.move(); // 调用父类的move方法
System.out.println("Dog is running");
}
}
```
阅读全文