继承和多态

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”的关系,比如狗是一种动物。而多态则是“像”的关系,比如我们可以把一只狗当作动物来处理。
  • 继承主要可以让我们避免重复编写相同的代码。而多态则主要用于实现灵活性和扩展性,它可以让我们的代码更容易地适应未来的变化。
posted @   吧拉吧拉吧  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示