📜  Java-继承(1)

📅  最后修改于: 2023-12-03 15:01:34.927000             🧑  作者: Mango

Java 继承

Java 中的继承是面向对象编程的核心概念之一。继承允许代码在不改变原本逻辑的情况下实现代码重用,同时避免了重复代码的问题。

什么是继承?

继承是一种机制,用于一个类可以继承另一个类的属性和方法。子类(派生类)继承自父类(基类或超类),并且可以覆盖或添加自己的属性和方法。

如何实现继承?

在 Java 中,使用 extends 关键字来实现继承。下面是一个示例:

public class Animal {
    public void eat() {
        System.out.println("Animal is eating");
    }
}

public class Cat extends Animal {
    public void meow() {
        System.out.println("Meow!");
    }
}

上面的代码中,Cat 类继承自 Animal 类,因此 Cat 类具有 Animal 类中的 eat() 方法,同时也添加了自己的 meow() 方法。

重写方法

子类可以 @Override 父类的方法,以改变或扩展父类的行为。例如:

public class Animal {
    public void makeSound() {
        System.out.println("Animal is making a sound");
    }
}

public class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Meow!");
    }
}

在这个例子中,Cat 类重写了 Animal 类中的 makeSound() 方法,以输出猫的特定叫声。

super 关键字

子类可以使用 super 关键字来调用父类的构造方法、属性和方法。例如:

public class Animal {
    protected String name;
    
    public Animal(String name) {
        this.name = name;
    }
    
    public void eat() {
        System.out.println("Animal is eating");
    }
}

public class Cat extends Animal {
    public Cat(String name) {
        super(name);
    }
    
    public void meow() {
        System.out.println("Meow!");
    }
}

在这个例子中,Cat 类调用父类 Animal 的构造方法来设置 name 属性。

抽象类和接口

抽象类和接口是 Java 程序员用来定义类和对象的另外两种方法。

抽象类是一种不能被实例化的类,它的目的是为了让其子类来实现或重写其抽象方法。例如:

public abstract class Animal {
    protected String name;
    
    public Animal(String name) {
        this.name = name;
    }
    
    public abstract void makeSound();
}

public class Cat extends Animal {
    public Cat(String name) {
        super(name);
    }
    
    @Override
    public void makeSound() {
        System.out.println("Meow!");
    }
}

在这个例子中,Animal 类被声明为抽象,因为它有一个或多个抽象方法。Cat 类实现了 Animal 类中的 makeSound() 方法。

接口是 Java 中一种特殊的抽象类,它只包括一组方法定义,而没有实现。所有实现了该接口的类都必须实现其所有的方法。例如:

public interface Animal {
    public void makeSound();
}

public class Cat implements Animal {
    @Override
    public void makeSound() {
        System.out.println("Meow!");
    }
}

在这个例子中,Cat 类实现了 Animal 接口中的 makeSound() 方法。

小结

在 Java 中,继承是一种重要的面向对象编程概念。它允许代码重用和扩展。子类可以重写父类中的方法,并使用 super 关键字调用父类的构造方法、属性和方法。此外,还有抽象类和接口这两种方式来定义类和对象。