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

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

时间:2024-11-17 20:14:24浏览次数:3  
标签:知识点 Java 继承 子类 void 29 Animal 父类 class

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

标签:知识点,Java,继承,子类,void,29,Animal,父类,class
From: https://blog.csdn.net/qq_45746668/article/details/143780082

相关文章

  • java day13 Set集合 & Map集合 & Stream流
    目录​编辑1.Set集合: 1.Set集合的特点:  2.HashSet的底层原理:​编辑  3.LinkedHashSet集合的底层原理:  4.TreeSet集合:2.Map集合: 1.Map集合概述: 2.Map集合的常用方法:3.Map集合的遍历方式:  4.Map集合的实现类:3.Stream流:1.获取流的方法:2.流......
  • 前端 易混淆知识点梳理
    目录一、严格模式与非严格模式二、双等于三等的区别三、防抖和节流四、原型和原型链五、页面重绘和回流六、script标签async和defer七、普通函数和箭头函数的区别八、JS闭包1、闭包特点2、闭包作用3、闭包风险4、运用场景1)常见闭包2)实现模块化3)缓存函数4)封装私......
  • 零基础Java第十五期:抽象类接口(一)
    目录一、抽象类1.1.抽象的概念1.2.抽象类语法 1.3.抽象类的特性 1.4.图形类例子 二、接口2.1.接口的概念2.2.语法规则 2.3.  接口的特性 2.4.接口的使用2.5. 实现多个接口2.6.工作当中常用的接口 一、抽象类1.1.抽象的概念    如果......
  • 基于Java+SSM+Vue数字乡村管理系统的设计与实现
    博主主页:一季春秋博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、小程序、安卓app、大数据等设计与开发。感兴趣的可......
  • 零基础java学习-预科准备-博客的重要性
    零基础java学习-预科准备-博客的重要性学习准备:博客(英文名blog,正式名称为网络日记)为什么要写博客?(简要:加深印象、总结经验、吸取教训、养成良好习惯收益无穷)1.需要总结和思考,能帮助我们更有效的记忆。2.提升文笔组织能力,进公司可能每周都要写周报,可能会写一些详细的帮助文档,要......
  • 韩顺平Java坦克大战项目分析与实现
    JAVA坦克大战项目文章目录界面技术栈项目结构Tank坦克父类EnemyTank敌人坦克类Hero己方坦克类Bomb爆炸类Shot子弹类MyPanel面板类AePlayWave坦克大战音乐类Node类Recorder记录类程序入口类功能子弹移动(线程)坦克移动(线程)每隔100毫秒,重绘区域,刷新绘图区(......
  • java初步与IDEA的安装
    为什么选择JavaJava用途广泛:Java是目前使用最为广泛的网络编程语言之一,在服务器端占比90%以上.Java可以用来做什么:1.企业级应用,特别是金融服务与电子商务领域.2.Android应用开发,是Android移动应用的主要开发语言之一.3.Web开发.4.桌面应用.5.大数据技术,hadoop及......
  • Java集合框架高频面试问题精粹(下篇)
    书接上回,上一篇文章介绍了Java集合常见面试题全解(上),反响不错,也有很多同学发表了自己的观点,这次又来了,这次是Java集合常见面试题总结(下)了,主要讲解了Map集合原理,它的使用频率也是很高。那么它的存储结构和实现原理是怎么样的呢一、Collections工具类(不重要)Collections 工......
  • 基于java+springboot的社区心理健康服务平台系统
    前言基于java+springboot的社区心理健康服务平台系统是守护社区居民心理健康的重要依托。系统为居民提供心理测评功能,涵盖情绪、压力、人际关系等多方面的专业量表,居民可自行测试,系统会即时给出结果和相应建议。同时,设有心理咨询预约模块,居民能查看心理咨询师的资料,......
  • 2024-2025-1 20241329 《计算机基础与程序设计》第八周学习总结
    作业信息作业归属课程:https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08作业目标:功能设计与面向对象设计;面向对象设计过程;面向对象语言三要素;汇编、编译、解释、执行作业正文:https://www.cnblogs.com/inca......