java的继承和多态

Java的继承和多态是面向对象编程中的两个核心概念,通过它们可以更加灵活地组织代码,提高代码的复用性和扩展性。

一、继承

在Java中,通过关键字extends可以实现继承关系。子类继承了父类的属性和方法,同时还可以添加自己特有的属性和方法。子类可以重写父类的方法,以覆盖父类的实现,从而实现自己的业务逻辑。

下面是一个简单的代码示例来说明Java的继承:

// 定义一个父类 Animal  
class Animal {  
    private String name;  
      
    public Animal(String name) {  
        this.name = name;  
    }  
      
    public void eat() {  
        System.out.println(name + " is eating...");  
    }  
}  
  
// 定义一个子类 Dog,继承自 Animal 类  
class Dog extends Animal {  
    public Dog(String name) {  
        super(name); // 调用父类的构造函数  
    }  
      
    // 重写父类的 eat 方法  
    @Override  
    public void eat() {  
        System.out.println(getName() + " is eating dog food...");  
    }  
      
    // 添加子类特有的方法 bark  
    public void bark() {  
        System.out.println(getName() + " is barking...");  
    }  
}

在上面的代码中,我们定义了一个父类Animal,它有一个私有属性name和一个公有方法eat。然后我们定义了一个子类Dog,它继承了Animal类,并添加了一个特有的方法bark。在子类的构造函数中,我们通过super关键字调用了父类的构造函数,传递了name参数。在子类中,我们重写了父类的eat方法,实现了自己的业务逻辑。同时,子类还可以调用父类的方法,例如通过super.eat()来调用父类的eat方法。这样,当我们创建一个Dog对象并调用它的eat方法时,会输出“Dog is eating dog food…”这样的结果。而当我们调用它的bark方法时,会输出“Dog is barking…”这样的结果。

二、多态

多态是指不同的对象对同一消息做出不同的响应。在Java中,多态主要通过方法重写和方法重载来实现。当一个父类引用指向一个子类对象时,该引用可以调用子类中重写的方法,这就是多态的体现。下面是一个简单的代码示例来说明Java的多态:

// 定义一个父类 Shape  
class Shape {  
    public void draw() {  
        System.out.println("Drawing a shape...");  
    }  
}  
  
// 定义两个子类 Circle 和 Rectangle,继承自 Shape 类,并重写 draw 方法  
class Circle extends Shape {  
    @Override  
    public void draw() {  
        System.out.println("Drawing a circle...");  
    }  
}  
  
class Rectangle extends Shape {  
    @Override  
    public void draw() {  
        System.out.println("Drawing a rectangle...");  
    }  
}

在上面的代码中,我们定义了一个父类Shape和两个子类Circle和Rectangle,它们都重写了父类的draw方法。当我们创建一个父类引用指向一个子类对象时,例如: Shape shape = new Circle(); 或 Shape shape = new Rectangle(); ,我们可以使用该引用调用子类中重写的方法。例如: shape.draw(); 。这样,当我们调用 shape.draw() 方法时,会根据实际对象的类型来调用相应的方法实现。如果 shape 引用指向一个 Circle 对象,则会输出“Drawing a circle…”这样的结果;如果 shape 引用指向一个 Rectangle 对象,则会输出“Drawing a rectangle…”这样的结果。这就是多态的体现。

你可能感兴趣的:(Java,java,开发语言)