自学内容网 自学内容网

Java学习教程,从入门到精通,Java继承语法知识点及案例代码(29)

1、Java继承语法知识点及案例代码

一、继承的基本概念

继承是面向对象编程中的一个重要概念,指的是子类从父类继承属性和方法的能力。通过继承,子类可以直接访问父类的非私有属性和非私有方法,实现代码重用和扩展。

二、继承的语法

在Java中,使用关键字extends来实现继承。子类使用关键字extends后面跟随父类的名称来继承父类。语法形式如下:

class 子类名 extends 父类名 {
    // 子类的属性和方法
}
三、继承的分类
  • 单继承:在Java中,只支持单继承,即一个子类只能继承一个父类。这是为了避免多继承带来的复杂性和代码混乱问题。
  • 多继承:Java不支持多继承,但可以通过实现多个接口来达到类似的效果。
四、继承的层级关系

继承形成了一个类的层级结构,通过继承,可以形成父类、子类的层级关系,构建类之间的依赖关系和扩展关系。

五、继承的原理和特点
  • 原理:在Java中,继承是通过子类内部维护一个指向父类的引用来实现的。这样子类就可以通过这个引用来访问父类的非私有属性和方法。
  • 特点
    • 子类可以继承父类的publicprotected属性和方法。
    • 子类不能继承父类的private属性和方法。
    • 子类可以重写父类的方法,实现自己的逻辑。
    • 子类可以新增属性和方法。
    • 子类可以用父类的引用指向子类对象。
六、super关键字的使用

在子类中,如果要调用父类的方法或属性,可以使用super关键字来访问。super关键字可以用来调用父类构造方法、访问父类的成员变量和成员方法。

七、Object类

所有的类在Java中都直接或间接继承自Object类。Object类提供了一些通用的方法,如toString()equals()hashCode()等。子类可以重写这些方法来定制自己的行为。

八、继承的代码实现

示例代码

// 定义父类
class Animal {
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void eat() {
        System.out.println(name + " is eating");
    }
}

// 定义子类,继承自Animal
class Dog extends Animal {
    public void bark() {
        System.out.println(name + " is barking");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.setName("Tom");
        System.out.println("Dog name: " + dog.getName());
        dog.eat();
        dog.bark();
    }
}

说明

  1. Animal类是一个父类,包含一个属性name和一个方法eat()
  2. Dog类是一个子类,使用extends关键字继承自Animal类。它继承了Animal类的name属性和eat()方法,并添加了自己的方法bark()
  3. Main类的main方法中,创建了一个Dog对象,并调用了继承自Animaleat()方法和子类自己的bark()方法。
九、继承的注意事项
  • 父类的构造方法不会被继承,但子类的构造方法调用父类的构造方法来初始化父类的状态。
  • 子类不能继承父类的private属性和方法。
  • 子类可以通过super关键字调用父类的构造方法和方法。
  • 谨慎使用多层继承,避免类层级过于复杂,增加代码阅读和维护的难度。
十、继承的多态性

通过将父类的引用指向子类的对象,可以实现对子类对象的引用,以实现动态绑定和多态性。

示例代码

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

class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        Animal dog = new Dog(); // 父类引用指向子类对象

        animal.makeSound(); // 输出: Animal makes a sound
        dog.makeSound();    // 输出: Dog barks
    }
}

说明

  • Animal类有一个makeSound()方法,输出通用的声音信息。
  • Dog类重写了makeSound()方法,提供了特定于狗的叫声。
  • Main类的main方法中,分别调用了AnimalDog对象的makeSound()方法,展示了多态性的效果。

通过以上知识点和示例代码,可以全面了解Java继承语法的相关内容。

当然可以,以下是一些具体的Java继承案例,旨在帮助更好地理解继承的概念和应用。

案例一:动物类及其子类

父类:Animal
class Animal {
    String name;
    int age;

    void eat() {
        System.out.println(name + " is eating.");
    }

    void sleep() {
        System.out.println(name + " is sleeping.");
    }
}
子类:Dog 继承自 Animal
class Dog extends Animal {
    void bark() {
        System.out.println(name + " is barking.");
    }
}
测试类:Main
public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.name = "Buddy";
        dog.age = 5;

        dog.eat(); // 继承自父类的方法
        dog.sleep(); // 继承自父类的方法
        dog.bark(); // 子类自己的方法
    }
}

输出

Buddy is eating.
Buddy is sleeping.
Buddy is barking.

案例二:交通工具类及其子类

父类:Vehicle
class Vehicle {
    String brand;

    void start() {
        System.out.println(brand + " is starting.");
    }

    void stop() {
        System.out.println(brand + " is stopping.");
    }
}
子类:Car 继承自 Vehicle
class Car extends Vehicle {
    int numberOfWheels = 4;

    void drive() {
        System.out.println(brand + " is driving with " + numberOfWheels + " wheels.");
    }
}
子类:Bike 继承自 Vehicle
class Bike extends Vehicle {
    int numberOfWheels = 2;

    void pedal() {
        System.out.println(brand + " is pedaling with " + numberOfWheels + " wheels.");
    }
}
测试类:Main
public class Main {
    public static void main(String[] args) {
        Car car = new Car();
        car.brand = "Toyota";

        car.start(); // 继承自父类的方法
        car.stop(); // 继承自父类的方法
        car.drive(); // 子类自己的方法

        Bike bike = new Bike();
        bike.brand = "Trek";

        bike.start(); // 继承自父类的方法
        bike.stop(); // 继承自父类的方法
        bike.pedal(); // 子类自己的方法
    }
}

输出

Toyota is starting.
Toyota is stopping.
Toyota is driving with 4 wheels.
Trek is starting.
Trek is stopping.
Trek is pedaling with 2 wheels.

案例三:图形类及其子类

父类:Shape
abstract class Shape {
    String color;

    abstract void draw();

    void setColor(String color) {
        this.color = color;
    }

    void getColor() {
        System.out.println("Color: " + color);
    }
}
子类:Circle 继承自 Shape
class Circle extends Shape {
    int radius;

    @Override
    void draw() {
        System.out.println("Drawing a circle with radius " + radius);
    }
}
子类:Rectangle 继承自 Shape
class Rectangle extends Shape {
    int length;
    int width;

    @Override
    void draw() {
        System.out.println("Drawing a rectangle with length " + length + " and width " + width);
    }
}
测试类:Main
public class Main {
    public static void main(String[] args) {
        Circle circle = new Circle();
        circle.setColor("Red");
        circle.radius = 5;

        circle.getColor();
        circle.draw();

        Rectangle rectangle = new Rectangle();
        rectangle.setColor("Blue");
        rectangle.length = 10;
        rectangle.width = 5;

        rectangle.getColor();
        rectangle.draw();
    }
}

输出

Color: Red
Drawing a circle with radius 5
Color: Blue
Drawing a rectangle with length 10 and width 5

在这些案例中,通过继承,子类能够复用父类的代码,同时添加或重写方法以适应新的需求。这些案例展示了继承在Java编程中的实际应用,有助于更好地理解继承的概念和用法。

上述Java继承的案例可以应用于多种实际场景,以下是对这些案例潜在应用场景的详细阐述:

案例一:动物类及其子类

  • 应用场景

    • 游戏开发:在开发动物主题的游戏时,可以使用继承来创建不同的动物角色。例如,可以有一个Animal基类,然后创建DogCatBird等子类,每个子类都有自己独特的属性和行为。
    • 自然保护区管理:在自然保护区管理软件中,可以使用继承来管理不同类型的动物。通过继承,可以轻松地添加新的动物类型,同时保持代码的整洁和可维护性。

案例二:交通工具类及其子类

  • 应用场景
    • 物流管理系统:在物流系统中,可以使用继承来管理不同类型的交通工具。例如,Vehicle基类可以包含所有交通工具的通用属性和方法,如品牌、启动、停止等。然后,可以创建CarTruckBike等子类来表示具体的交通工具。
    • 城市规划:在城市规划软件中,可以使用继承来模拟不同类型的交通工具对城市交通的影响。通过继承,可以轻松地添加新的交通工具类型,并评估它们对交通流量、噪音污染等方面的影响。

案例三:图形类及其子类

  • 应用场景

    • 图形编辑软件:在图形编辑软件中,可以使用继承来管理不同类型的图形对象。例如,Shape基类可以包含所有图形的通用属性和方法,如颜色、绘制等。然后,可以创建CircleRectangleTriangle等子类来表示具体的图形。
    • 数据分析可视化:在数据分析可视化工具中,可以使用继承来创建不同类型的图表。通过继承,可以轻松地添加新的图表类型,如条形图、折线图、饼图等,并自定义它们的外观和行为。

综上所述,Java继承的案例可以广泛应用于游戏开发、物流管理、城市规划、图形编辑以及数据分析可视化等多个领域。通过继承,开发者可以更加高效地组织代码,提高代码的可复用性和可维护性。


原文地址:https://blog.csdn.net/qq_45746668/article/details/143780082

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!