江明涛的博客
Java继承和实现接口的区别
Java继承和实现接口的区别

Java继承和实现接口的区别

Java是一种面向对象的编程语言,通过继承和实现接口来实现代码的复用和灵活性。虽然继承和实现接口都可以达到类之间的关系和行为的实现,但它们在实现上有一些不同之处。

继承

继承是指一个类(子类)从另一个类(父类)继承属性和方法的过程。子类可以继承父类的所有非私有成员(字段和方法),并且可以添加自己特有的属性和方法。继承的关系可以形成类的层次结构,使得代码的重用更加简单和方便。

在Java中,使用extends关键字来实现继承。例如:

public class Animal {
    protected String name;
    
    public void eat() {
        System.out.println("Animal is eating");
    }
}
public class Dog extends Animal {
    public void bark() {
        System.out.println("Dog is barking");
    }
}

在上面的例子中,Dog类继承了Animal类的name属性和eat方法,并且添加了自己的bark方法。

实现接口

接口是定义行为的规范,它只包含方法的声明而不包含实现。一个类可以实现多个接口,从而实现多个不同的行为。接口通过implements关键字来实现。

在Java中,使用接口可以达到多态的效果。例如:

public interface Shape {
    void draw();
}
public class Circle implements Shape {
    public void draw() {
        System.out.println("Drawing a circle");
    }
}
public class Rectangle implements Shape {
    public void draw() {
        System.out.println("Drawing a rectangle");
    }
}

在上面的例子中,Circle类和Rectangle类都实现了Shape接口,并且实现了draw方法。通过声明Shape类型的变量,可以调用draw方法来实现多态。

区别

继承和实现接口都可以实现类之间的关系和行为的实现,但它们在实现上有以下区别:

  1. 继承是一个类从另一个类继承属性和方法,而接口是一个类实现接口的方法。
  2. 一个类只能继承一个父类,但可以实现多个接口。
  3. 继承是一种“是什么”的关系,接口是一种“能做什么”的关系。
  4. 继承的关系可以形成类的层次结构,但接口之间没有层次结构。
  5. 继承可以继承父类的属性和方法的实现,而接口只能继承方法的声明。

总之,继承和实现接口是实现代码复用和灵活性的两种方式,具体的选择取决于业务需求和设计目标。需要根据具体情况,合理使用继承和接口来实现类之间的关系和行为。