首页 > 其他分享 >继承和多态

继承和多态

时间:2023-12-05 22:23:33浏览次数:22  
标签:area 继承 double 多态 Shape public

1.继承

  • 继承是面向对象编程中的一个基本特征,它允许我们定义一个类(称为子类或派生类)来继承另一个类(称为父类或基类)的属性和方法。子类可以添加新的属性和方法,也可以重写父类的方法。这使得子类可以在父类的基础上进行扩展和特化。

  • 例:在该例子中,Dog 类继承了 Animal 类,并重写了makeSound 方法。所以当我们创建一个 Dog 对象并调用makeSound 方法时,将会打印出 "The dog is eating"。

    // 基类 Animal  
    public class Animal {  
        public void eat() {  
            System.out.println("The animal is eating");  
        }  
    }  
    
    // 派生类 Dog  
    public class Dog extends Animal {  
        public void eat() {  
            System.out.println("The dog is eating");  
        }  
    }
    // 测试类
    public class Test {
        public static void main(String[] args) {
            Animal a = new Animal();
            a.eat();
            Dog d = new Dog();
            d.eat();
        }
    }
    

2.多态

  • 多态是面向对象编程的三大特性之一,它允许我们使用一个接口来表示多种形式的实现。具体来说,多态允许我们在运行时根据对象的实际类型来执行对应的方法。在Java中,多态主要通过接口、继承和重载来实现。
  • 例:在这个例子中,我们有一个 Shape 基类,它有一个抽象的 area 方法。然后我们创建了两个派生类 Circle 和 Rectangle,它们都继承了 Shape 并实现了 area 方法。虽然这两个派生类的 area 方法实现不同,但我们可以使用一个 Shape 类型的引用来引用它们,并在运行时调用正确的 area 方法。即多态的表现
    // 基类 Shape  
    public abstract class Shape {  
        public abstract double area();  
    }  
    
    // 派生类 Circle  
    public class Circle extends Shape {  
        private double radius;  
        public Circle(double radius) {  
            this.radius = radius;  
        }  
        public double area() {  
            return Math.PI * radius * radius;  
        }  
    }  
    
    // 派生类 Rectangle  
    public class Rectangle extends Shape {  
        private double width;  
        private double height;  
        public Rectangle(double width, double height) {  
            this.width = width;  
            this.height = height;  
        }  
        public double area() {  
            return width * height;  
        }  
    }
        // 测试类
    public class Test {
        public static void main(String[] args) {
            Shape shape1 = new Circle(5);  
            Shape shape2 = new Rectangle(4, 6);  
            System.out.println(shape1.area()); // 输出圆的面积  
            System.out.println(shape2.area()); // 输出矩形的面积
        }
    }
    

3.继承和多态的区别小结

  • 继承是从已有的类创建新类的一种方式,让我们可以定义一个类来继承另一个类的属性和方法。而多态则是允许我们使用父类引用指向子类对象(如上例中Shape shape1 = new Circle(5);),并在运行时动态地确定要执行哪个子类的方法。
  • 继承是“is-a”的关系,比如狗是一种动物。而多态则是“像”的关系,比如我们可以把一只狗当作动物来处理。
  • 继承主要可以让我们避免重复编写相同的代码。而多态则主要用于实现灵活性和扩展性,它可以让我们的代码更容易地适应未来的变化。

标签:area,继承,double,多态,Shape,public
From: https://www.cnblogs.com/qq286442936/p/17878434.html

相关文章

  • C++运行期多态和编译期多态(以不同的模板参数调用不同的函数)
    在面向对象C++编程中,多态是OO三大特性之一,这种多态称为运行期多态,也称为动态多态;在泛型编程中,多态基于template(模板)的具现化与函数的重载解析,这种多态在编译期进行,因此称为编译期多态或静态多态。<h1"="">1运行期多态运行期多态的设计思想要归结到类继承体系的设计上去。对......
  • java基础语法-pageage-构造方法-继承-多态
    java中的包-package包:包中有很多的类,根据类的功能不同,我们可以创建不同的包。包的主要功能:包的主要功能:用于分类管理包的基本语法package包的路径路径与路径之间使用点隔开:package.fatherlujing.sonlujing在一个文件中,可以没有包,或者一个包。但是不能出现两个包。......
  • 多态
    多态为什么产生:学生是学生,学生也是人1.语法StudentPersonStuedntstudent=newStuedent(); Personperson=newPerson();2.接口和类都可以产生多态isa3.实际开发中,面向接口编程4.多态调用的时候,如果父类或者接口里面没有这种字段或者方法,......
  • 深入理解泛型(经典详解):<T> T 和 T的使用以及public <E> List<E> get()泛型方法详解、类型擦
     一、为什么要使用泛型?    泛型俗称“标签”,使用<E>表示。泛型就是在允许定义类,接口时通过一个标识表示某个属性的类型或者是某个方法的返回值或者是参数类型,参数类型在具体使用的时候确定,在使用之前对类型进行检查。     泛型意味着编写的代码可以被很多不同......
  • go接口多态性
    浅谈Golang接口:作用、应用场景及实际应用马哥Linux运维 2023-12-0418:42 发表于江苏引言:    Golang(Go)作为一门现代的静态类型编程语言,提供了许多强大的特性,其中之一便是接口(interface)。接口是Golang中的一个核心概念,它具有广泛的应用场景,可以帮助开发者实现代码的......
  • Day14 多态知识点综合
    1.方法重写的定义重载(overload)是在同一个类中的具有多个相同方法名,参数列表不同(的方法(返回类型可以不同),构造方法、普通方法、抽象方法都可以重载;重写(override)是在子类继承父类的时候重写,可以用@Override检查是否是重写方法,方法重载是一个类的多态性的表现,而方法重写是子类与父类......
  • Day13 继承知识点综合
    1.继承java只有单继承关键字:extendsclassA{}//父类classBextendsclassA{}//子类B继承了A类2.继承权限相较于C++的public,protected,private,java对不写继承的default的定义不一样:c++default=privateJava不写则默认是default,是一个新的权限,所以Java有......
  • 三. 继承和派生
    文章参考:《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客1.继承案例#include<iostream>#include<string>usingnamespacestd;classPerson{private: stringname; stringid_number; intage;public: Person(stringname1,stringi......
  • 四. 多态性和虚函数
    文章参考:《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客1.多态性概述所谓多态性,就是不同对象接收不同消息时,产生不同的动作。这样就可以用相同的接口访问不同的函数,从而实现一个接口,多种方法。从实现方式上看,多态性分为两种:编译时多态:在C++......
  • 实验5 继承和多态
    实验任务三pets.hpp#pragmaonce#include<iostream>#include<string>usingnamespacestd;classMachinePets{protected:stringnickname;public:MachinePets(conststrings):nickname(s){};public:virtualstringtalk()=0;s......