Rumah  >  Artikel  >  Java  >  Peranan antara muka dan kelas abstrak dalam generik Java

Peranan antara muka dan kelas abstrak dalam generik Java

WBOY
WBOYasal
2024-05-02 15:00:02376semak imbas

Antara muka digunakan untuk menentukan tingkah laku yang mesti dilaksanakan oleh kelas, membenarkan subtaip. Kelas abstrak mengandungi kaedah abstrak, membenarkan kelas abstrak tidak boleh digunakan.

接口和抽象类在 Java 泛型中的作用

Peranan antara muka dan kelas abstrak dalam Java Generics

Pengenalan
Generik ialah teknik pengaturcaraan yang berkuasa yang membolehkan kami mencipta kod boleh guna semula tanpa menyatakan jenis konkrit. Antara muka dan kelas abstrak memainkan peranan penting dalam generik, menyediakan mekanisme untuk mencapai polimorfisme dan abstraksi dalam sistem ditaip.

Antaramuka
Antara muka ialah jenis abstrak yang hanya mengandungi pengisytiharan kaedah. Ia mentakrifkan satu set kaedah yang mesti dilaksanakan oleh mana-mana kelas yang melaksanakan antara muka. Antara muka tidak boleh mengandungi sebarang medan atau pembina.

Subtaip
Antara muka boleh digunakan untuk mewujudkan hubungan subtaip. Apabila kelas melaksanakan antara muka, ia menjadi subjenis antara muka itu. Ini bermakna objek kelas itu boleh diberikan kepada pembolehubah jenis antara muka itu, sama seperti objek subkelas boleh diberikan kepada pembolehubah jenis kelas induknya.

Contoh Praktikal

public interface Comparable<T> {
    int compareTo(T other);
}

public class Person implements Comparable<Person> {

    private String name;
    private int age;

    @Override
    public int compareTo(Person other) {
        return this.age - other.age;
    }
}

// 使用示例
List<Person> people = new ArrayList<>();
people.add(new Person("John", 30));
people.add(new Person("Mary", 25));

Collections.sort(people);  // 使用接口实现按年龄排序

Dalam contoh ini, kelas Person melaksanakan antara muka Comparable, membolehkan ia dibandingkan mengikut umur. Ini bermakna kita boleh mengisih koleksi objek Orang menggunakan kaedah Collections.sort(). Person 类实现了 Comparable 接口,使其可以按年龄进行比较。这意味着我们可以使用 Collections.sort() 方法对 Person 对象集合进行排序。

抽象类
抽象类是一种不能被实例化的类。它可以包含抽象方法(没有实现的方法),以及普通方法和字段。

多态性
抽象类允许以多态的方式使用对象。当创建一个引用抽象类类型的变量时,它可以引用该类或其任何子类的对象。

实用示例

public abstract class Shape {

    private String color;

    public abstract double getArea();
}

public class Rectangle extends Shape {

    private double width;
    private double height;

    @Override
    public double getArea() {
        return width * height;
    }
}

public class Circle extends Shape {

    private double radius;

    @Override
    public double getArea() {
        return Math.PI * radius * radius;
    }
}

// 使用示例
List<Shape> shapes = new ArrayList<>();
shapes.add(new Rectangle(5, 10));
shapes.add(new Circle(5));

for (Shape shape : shapes) {
    System.out.println(shape.getArea());
}

在这个示例中,Shape 是一个抽象类,它定义了一个 getArea() 方法,该方法由其子类 RectangleCircle

🎜Kelas abstrak🎜🎜Kelas abstrak ialah kelas yang tidak boleh dibuat seketika. Ia boleh mengandungi kaedah abstrak (kaedah tanpa pelaksanaan), serta kaedah dan medan biasa. 🎜🎜🎜Polymorphism🎜🎜Kelas abstrak membolehkan objek digunakan dalam cara polimorfik. Apabila anda mencipta pembolehubah yang merujuk kepada jenis kelas abstrak, ia boleh merujuk kepada objek kelas itu atau mana-mana subkelasnya. 🎜🎜🎜Contoh Praktikal🎜🎜rrreee🎜Dalam contoh ini, Shape ialah kelas abstrak yang mentakrifkan kaedah getArea(), yang ditakrifkan oleh subkelasnyaRectangle dan Bulatan dilaksanakan. Ini membolehkan kita mencipta objek pelbagai bentuk dan menyimpannya dalam koleksi dan menggunakannya dalam cara polimorfik. 🎜

Atas ialah kandungan terperinci Peranan antara muka dan kelas abstrak dalam generik Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn