📅  最后修改于: 2023-12-03 15:32:03.503000             🧑  作者: Mango
在Java编程语言中,接口和类是两个非常重要的概念。它们都可以用来定义一些数据类型,但它们在定义和实现方式上有很大的不同。本文将探讨Java接口和类的区别。
Java类是用class
关键字定义的,它可以包含字段、方法和构造函数等内容。
例如:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
Java接口是用interface
关键字定义的,它只包含方法的声明,不包含方法的实现。
例如:
public interface Flying {
void fly();
}
Java类可以通过继承来扩展它们的行为。一个类可以继承自一个父类,并且可以实现一个或者多个接口。
例如:
public class Bird extends Animal implements Flying {
@Override
public void fly() {
System.out.println("I'm flying.");
}
}
Java接口可以扩展其他接口,从而形成接口之间的继承关系。
例如:
public interface Swimmable extends Moveable {
void swim();
}
Java类的多态性是通过继承和重写来实现的。子类可以重写父类的方法,并可以根据需要调用相应的方法。
例如:
public class Shape {
public void draw() {
System.out.println("Drawing a shape.");
}
}
public class Circle extends Shape {
@Override
public void draw() {
System.out.println("Drawing a circle.");
}
}
public class Square extends Shape {
@Override
public void draw() {
System.out.println("Drawing a square.");
}
}
public class Main {
public static void main(String[] args) {
Shape[] shapes = new Shape[] {new Circle(), new Square()};
for (Shape shape : shapes) {
shape.draw();
}
}
}
Java接口的多态性是通过实现和类似于方法重写的方式实现的。实现类可以重写接口中的方法,并可以根据需要调用相应的方法。
例如:
public interface Moveable {
void move(int distance);
}
public class Person implements Moveable {
@Override
public void move(int distance) {
System.out.println("I'm moving " + distance + " meters.");
}
}
public class Car implements Moveable {
@Override
public void move(int distance) {
System.out.println("I'm driving " + distance + " kilometers.");
}
}
public class Main {
public static void main(String[] args) {
Moveable[] moveables = new Moveable[] {new Person(), new Car()};
for (Moveable moveable : moveables) {
moveable.move(10);
}
}
}
Java接口和类都是Java编程语言中非常重要的概念。它们在定义方式、继承方式和多态性方面有很大的不同。对于程序员来说,了解它们之间的区别可以更好地利用它们来实现各种功能。