java中重载,继承,重写和多态的区别

yizhihongxing

Java 是一门面向对象编程语言,其中重载、继承、重写和多态都是面向对象编程(OOP)中的核心概念。

重载(Overloading)

重载是指在同一个类中使用相同的方法名,但是参数类型和数量不同。重载可以让我们使用同一个方法名实现不同的功能。

下面是一个求和函数的重载示例:

public class Sum {
    public static int getSum(int a, int b) {
        return a + b;
    }

    public static int getSum(double a, double b) {
        return (int)(a + b);
    }
}

以上代码中,我们定义了两个名为 getSum 的方法,一个参数类型为 int,另一个为 double。这样就可以通过调用不同类型的 getSum 方法来实现不同类型数值的求和。

继承(Inheritance)

继承是指子类从父类中继承属性和方法。子类可以重新定义或添加特定于自己的属性和方法。

下面是一个继承示例:

public class Animal {
    public void eat() {
        System.out.println("动物在吃饭");
    }
}

public class Dog extends Animal {
    public void bark() {
        System.out.println("汪汪汪");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        Dog dog = new Dog();
        animal.eat();
        dog.eat();
        dog.bark();
    }
}

以上代码中,我们定义了一个父类 Animal 和一个子类 DogDog 继承了 Animaleat() 方法,并添加了 bark() 方法。通过创建 Dog 实例,可以使用 Dogbark() 方法,同时也可以使用从父类 Animal 继承而来的 eat() 方法。

重写(Overriding)

重写是指子类覆盖父类中的方法。通过重写,子类可以改变从父类继承而来的方法的实现方式。

下面是一个重写示例:

public class Animal {
    public void eat() {
        System.out.println("动物在吃饭");
    }
}

public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("猫在吃鱼");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        Cat cat = new Cat();
        animal.eat();
        cat.eat();
    }
}

以上代码中,我们定义了一个父类 Animal 和一个子类 CatCat 重写了父类 Animaleat() 方法,并改变了它们的实现方式。通过创建 Cat 实例,可以看到 Cat 使用自己的实现方式覆盖了从父类继承而来的 eat() 方法。

多态(Polymorphism)

多态是指同样的方法或对象,在不同情况下有不同的行为。Java 中的多态基于继承和重写的特性实现。

下面是一个多态示例:

public class Animal {
    public void eat() {
        System.out.println("动物在吃饭");
    }
}

public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("猫在吃鱼");
    }
}

public class Dog extends Animal {
    @Override
    public void eat() {
        System.out.println("狗在吃骨头");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal1 = new Cat();
        Animal animal2 = new Dog();
        animal1.eat();
        animal2.eat();
    }
}

以上代码中,我们定义了一个 Animal 父类和两个子类 Cat 和 Dog,并相应地重写了父类的 eat() 方法。在 Main 类中,我们创建 CatDog 实例,并用 Animal 类型的变量指向它们。这样就可以在运行时决定使用哪个子类的方法。在我们的示例中,通过使用 CatDog 实例分别调用父类的 eat() 方法,可以看到根据实际的具体类类型,输出了不同的结果。

综上所述,重载、继承、重写和多态是 Java 面向对象编程的核心概念。理解它们的区别和用法,可以让程序员更好地设计和编写高质量的 Java 代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中重载,继承,重写和多态的区别 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • element-ui 文件上传修改文件名的方法示例

    下面是关于element-ui文件上传修改文件名的方法示例的完整攻略: 1. element-ui文件上传基础知识 在使用element-ui进行文件上传时,需要先了解一些基础知识。element-ui提供了 el-upload 组件,可以用于文件上传。具体用法可以参考官方文档:el-upload 2. 修改上传文件的文件名 默认情况下,上传的文件的文件名是…

    other 2023年6月26日
    00
  • 等待资源时检测到死锁

    等待资源时检测到死锁 在进行资源的请求和分配时,发生死锁是一个常见的情况。死锁是指两个或更多进程(线程)无限期地等待一个永远不会被释放的资源,而没有任何进展的情况。死锁会导致系统资源的浪费,以及进程(线程)永远无法完成任务,从而影响整个系统的运行。因此,在进行资源的请求和分配时,需要采取措施来避免死锁的发生。 在等待资源时检测到死锁可能是一种避免死锁的方法。…

    其他 2023年3月29日
    00
  • vue实现ajax滚动下拉加载,同时具有loading效果(推荐)

    接下来我将详细讲解如何使用Vue实现Ajax滚动下拉加载并同时具有Loading效果,攻略过程中将包含两条示例说明。 1. 准备工作 在开始编写代码之前,我们需要确保已经安装好了Vue以及其他必要的依赖库。可以使用npm或yarn进行安装: # 使用npm npm install vue axios –save # 使用yarn yarn add vue …

    other 2023年6月25日
    00
  • 18.4#if0…endif的用途

    18.4#if0…endif的用途 在日常的程序开发过程中,常常会需要根据条件判断来执行相应的代码。C++中,我们通常使用if语句来进行条件判断。然而,在某些情况下,简单的if语句可能无法满足我们的需求。那么,18.4#if0…endif能为我们解决这类问题。 什么是18.4#if0…endif? 18.4#if0…endif是C++11标准中引入的一种编译…

    其他 2023年3月28日
    00
  • Win10 19H2慢速预览18362.10019怎么手动升级?

    当你想要手动升级Win10 19H2慢速预览18362.10019时,可以按照以下步骤进行: 步骤一:确认当前系统版本号 首先需要确认一下自己当前系统的版本号,可以按照以下步骤进行: 打开“设置”应用,在“系统”选项卡中找到“关于”选项; 在“关于”选项中,可以查看到当前系统的版本号。 当前Win10 19H2慢速预览的版本号为18362.10019。 步骤…

    other 2023年6月27日
    00
  • CentOS7.x卸载与安装MySQL5.7的操作过程及编码格式的修改方法

    下面是详细的“CentOS7.x卸载与安装MySQL5.7的操作过程及编码格式的修改方法”的完整攻略。 卸载MySQL 在卸载MySQL之前,应该先备份你的MySQL数据,以下是卸载MySQL的步骤: 停止MySQL服务 sudo systemctl stop mysqld.service 卸载MySQL软件 sudo yum remove mysql* 删…

    other 2023年6月20日
    00
  • JavaScript命名约定的最佳实践指南

    JavaScript命名约定的最佳实践指南 在编写JavaScript代码时,遵循一致的命名约定是非常重要的。良好的命名约定可以提高代码的可读性和可维护性。以下是一些JavaScript命名约定的最佳实践指南: 1. 使用有意义的变量和函数名 变量和函数名应该具有描述性,能够清晰地表达其用途和含义。避免使用单个字母或缩写作为变量名,除非在循环变量或临时变量中…

    other 2023年8月8日
    00
  • Win7系统开机黑屏提示Remove disks or other media的原因及解决方法

    Win7系统开机黑屏提示Remove disks or other media的原因 当我们启动Windows 7操作系统时,有时候会突然出现一行字:“Remove disks or other media. Press any key to restart。”,并且电脑还无法进入系统界面,这就是Win7系统开机黑屏提示Remove disks or oth…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部