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.
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()
方法,该方法由其子类 Rectangle
和 Circle
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!