java面向对象编程重要概念继承和多态示例解析

 更新时间:2023年05月30日 09:47:33   作者:继承与多态  
这篇文章主要为大家介绍了java面向对象编程的两个重要概念继承和多态示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

继承

继承和多态是面向对象编程的两个重要概念,它们使得我们可以创建更加通用、可扩展的代码。

继承是一种创建新类的方式,新类(子类)从现有类(父类)继承属性和方法。子类可以重写或扩展父类的功能。

要创建一个子类,可以使用 extends 关键字:

class SubClassName extends ParentClassName {
    // 子类的成员变量和方法
}

示例1:继承

// 父类
class Animal {
    String name;
    int age;
    void sleep() {
        System.out.println(name + " is sleeping.");
    }
}
// 子类
class Dog extends Animal {
    String breed;
    void bark() {
        System.out.println(name + " is barking.");
    }
}
class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog();
        myDog.name = "Buddy";
        myDog.age = 3;
        myDog.breed = "Golden Retriever";
        myDog.bark(); // 子类的方法
        myDog.sleep(); // 继承自父类的方法
    }
}

方法重写(覆盖)

子类可以重写父类的方法,以便在调用子类对象的该方法时使用子类的实现而不是父类的实现。重写方法的返回类型、方法名和参数列表必须与父类相同。

class SubClassName extends ParentClassName {
    @Override // 注解,表明该方法重写了父类的方法,非必须但建议使用
    ReturnType methodName(Parameters) {
        // 子类的实现
    }
}

示例2:方法重写

// 父类
class Animal {
    String name;
    int age;
    void sleep() {
        System.out.println(name + " is sleeping.");
    }
}
// 子类
class Dog extends Animal {
    String breed;
    void bark() {
        System.out.println(name + " is barking.");
    }
    @Override
    void sleep() {
        System.out.println(name + " the " + breed + " is sleeping.");
    }
}
class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog();
        myDog.name = "Buddy";
        myDog.age = 3;
        myDog.breed = "Golden Retriever";
        myDog.bark();
        myDog.sleep(); // 调用子类重写的方法
    }
}

多态

多态是一个对象在不同情况下表现出不同的行为。多态是通过父类引用指向子类对象实现的。

ParentClassName objectName = new SubClassName();

示例3:多态

// 父类
class Animal {
    String name;
    int age;
    void sleep() {
        System.out.println(name + " is sleeping.");
    }
}
// 子类
class Dog extends Animal {
    String breed;
    void bark() {
        System.out.println(name + " is barking.");
    }
    @Override
    void sleep() {
        System.out.println(name + " the " + breed + " is sleeping.");
    }
}
class Main {
    public static void main(String[] args) {
        // 多态
        Animal myAnimal = new Dog();
        myAnimal.name = "Buddy";
        myAnimal.age = 3;
        myAnimal.sleep(); // 调用子类重写的方法
        // 注意:无法访问子类特有的方法和属性
        // myAnimal.bark(); // 错误
        // myAnimal.breed = "Golden Retriever"; // 错误
    }
}

多态的主要优点是代码的可扩展性和维护性。当你需要添加新的子类时,不需要修改使用多态的代码。

抽象类和接口

抽象类和接口是 Java 中实现多态和代码复用的两种方式。

抽象类:包括抽象方法(没有实现的方法)和具体方法。子类必须实现所有抽象方法。使用 abstract 关键字定义抽象类和抽象方法。

abstract class AbstractClassName {
    // 抽象方法
    abstract ReturnType methodName(Parameters);
    // 具体方法
    ReturnType methodName(Parameters) {
        // 方法实现
    }
}
```

接口:定义一组方法签名(没有实现的方法)。实现接口的类必须实现所有方法。使用 interface 关键字定义接口。

interface InterfaceName {
    // 方法签名(没有方法体)
    ReturnType methodName(Parameters);
}
```

示例4:抽象类和接口

// 抽象类
abstract class Animal {
    String name;
    int age;
    abstract void makeSound();
    void sleep() {
        System.out.println(name + " is sleeping.");
    }
}
// 接口
interface Pet {
    void play();
}
// 子类实现抽象类和接口
class Dog extends Animal implements Pet {
    String breed;
    @Override
    void makeSound() {
        System.out.println(name + " is barking.");
    }
    @Override
    public void play() {
        System.out.println(name + " is playing.");
    }
}
class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog();
        myDog.name = "Buddy";
        myDog.age = 3;
        myDog.breed = "Golden Retriever";
        myDog.makeSound(); // 实现抽象类的抽象方法
        myDog.sleep(); // 继承自抽象类的具体方法
        myDog.play(); // 实现接口的方法
    }
}

这是关于继承和多态的基本介绍。通过这些概念,你可以创建更加灵活和可扩展的代码。在实际开发中,你会遇到更多复杂和实用的用例,通过多做练习和深入学习,你将更好地掌握这些知识点。

以上就是java面向对象编程重要概念继承和多态示例解析的详细内容,更多关于java 继承多态的资料请关注脚本之家其它相关文章!

相关文章

  • springboot配置允许跨域访问代码实例

    springboot配置允许跨域访问代码实例

    这篇文章主要介绍了springboot配置允许跨域访问代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • java发送内嵌图片邮件

    java发送内嵌图片邮件

    这篇文章主要介绍了java发送内嵌图片邮件,在博客系统中需要邮件服务的功能,仅仅是发送文本内容,现在尝试一下发送内嵌图片邮件,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • HDFS的Java API的访问方式实例代码

    HDFS的Java API的访问方式实例代码

    这篇文章主要介绍了HDFS的Java API的访问方式实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Java 面试题和答案 - (下)

    Java 面试题和答案 - (下)

    本文主要介绍Java 面试题,这里整理了Java面试题关于JDBC,线程异常处理,Servlet,JSP的知识的整理,帮助大家理解知识点,便于面试,有兴趣的小伙伴可以参考下
    2016-09-09
  • java编程题之顺时针打印矩阵

    java编程题之顺时针打印矩阵

    这篇文章主要为大家详细介绍了java编程题之顺时针打印矩阵,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • java使用HttpSession实现QQ访问记录

    java使用HttpSession实现QQ访问记录

    这篇文章主要介绍了java使用HttpSession实现QQ的访问记录的相关资料,需要的朋友可以参考下
    2016-03-03
  • 一文详解Spring Security的基本用法

    一文详解Spring Security的基本用法

    Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架, 提供了完善的认证机制和方法级的授权功能。本文将通过一个简单的案例了解一下Spring Security的基本用法,需要的可以参考一下
    2022-05-05
  • SpringBoot整合Flink CDC实现实时追踪mysql数据变动

    SpringBoot整合Flink CDC实现实时追踪mysql数据变动

    我们将整合Spring Boot和Apache Flink CDC(Change Data Capture)来实现实时数据追踪,下面是一个基本的实践流程代码,包括搭建Spring Boot项目、整合Flink CDC以及实现数据变动的实时追踪,需要的朋友可以参考下
    2024-07-07
  • Java建造者设计模式详解

    Java建造者设计模式详解

    这篇文章主要为大家详细介绍了Java建造者设计模式,对建造者设计模式进行分析理解,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Java中Socket设置连接超时的代码分享

    Java中Socket设置连接超时的代码分享

    在我们日常连接中,如果超时时长过长的话,在开发时会影响测试,下面这篇文章主要给大家分享了关于Java中Socket设置连接超时的代码,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-06-06

最新评论