Contents
Quý khách đang tìm kiếm từ khóa Abstract là gì trong Java được Update vào lúc : 2022-11-17 14:20:00 . Với phương châm chia sẻ Bí quyết Hướng dẫn trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi đọc Post vẫn ko hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Ad lý giải và hướng dẫn lại nha.
Trong bài này, tôi sẽ trình làng về lớp trừu tượng (abstract class) và interface trong Java, đồng thời phân tích sự giống và rất khác nhau giữa chúng.
Các tính chất của lập trình hướng đối tượng người dùng, những bạn hoàn toàn có thể xem ở nội dung bài viết: 4 tính chất của lập trình hướng đối tượng người dùng trong Java.
Lớp trừu tượng (Abstract Class) trong Java
Một lớp được khai báo với từ khóa abstract là lớp trừu tượng (abstract class).
Lớp trừu tượng hoàn toàn có thể có những phương thức abstract hoặc non-abtract.
Lớp trừu tượng hoàn toàn có thể khai báo 0, 1 hoặc nhiều method trừu tượng bên trong.
Không thể khởi tạo 1 đối tượng người dùng trực tiếp từ một class trừu tượng.
Một lớp thừa kế từ lớp trừu tượng (subclass lớp con) tránh việc phải implement non-abstract methods, nhưng những method nào có abstract thì nên phải override. Trừ khi subclass cũng là abstract.
Cú pháp:
abstract class
Cú pháp:
abstract void ();
Ví dụ: Viết chương trình vẽ một hình bất kỳ với red color, sao cho cách sử dụng là giống nhau, bất kể đó là hình gì. Hình đó hoàn toàn có thể làhình chữ nhật (rectangle), hình tròn trụ (circle), tam giác (triangle), đường (line),
Với yêu cầu trên, tôi tạo một lớp trừu tượng Shape. Lớp này phục vụ một phương thức trừu tượng draw, phương thức này để đảm nói rằng toàn bộ những hình đều phải có cùng cách sử dụng (draw). Ngoài ra, có phương thức không trừu tượng getColor để phục vụ màu sử dụng chung cho toàn bộ những hình. Tiếp theo, tôi tạo 2 lớp Rectangle và Circle thừa kế từ lớp Shape, 2 lớp này còn có những cách xử lý draw rất khác nhau. Cuối cùng, tôi tạo classShapeApp, gọi phương thức draw để vẽ hình theo yêu cầu.
Shape.java
public abstract class Shape
private String color = “red”;
public Shape()
public abstract void draw();
public String getColor()
return color;
Rectangle.java
public class Rectangle extends Shape
@Override
public void draw()
System.out.println(“Draw ” + super.getColor() + ” rectangle”);
Circle.java
public class Circle extends Shape
@Override
public void draw()
System.out.println(“Draw ” + super.getColor() + ” circle”);
ShapeApp.java
public class ShapeApp
public static void main(String[] args)
Shape rect = new Rectangle();
rect.draw();
System.out.println(“—“);
Shape circle = new Circle();
circle.draw();
Kết quả:
Draw red rectangle
—
Draw red circle
Lớp con nên phải setup (implement) toàn bộ những phương thức trừu tượng của lớp cha
Bạn nhận được tin báo lỗi nếu lớp con không setup (implement) toàn bộ những phương thức trừu tượng của lớp cha: The type Triangle must implement the inherited abstract method Shape.draw().
Không thể khởi tạo trực tiếp một lớp trừu tượng
Bạn nhận được tin báo lỗi khi cố ý khởi tạo một lớp trừu tượng: Cannot instantiate the type Shape.
Interface trong Java
Đặc điểm của Interface
Java Compiler thêm từ khóa public abstract trước phương thức của interface và những từ khóa public static final trước những thành viên tài liệu.
Một interface tương tự với một class bởi những điểm sau này:
Một interface khác với một class ở một số trong những điểm sau này:
Tương tự như yêu cầu ở ví dụ về sử dụng abstract class ở trên, nhưng tôi sẽ dụng Interface để vận dụng vào chương trình.
Shape.java
public interface Shape
String color = “red”;
void draw();
Rectangle.java
public class Rectangle implements Shape
@Override
public void draw()
System.out.println(“Draw ” + color + ” rectangle”);
Circle.java
public class Circle implements Shape
@Override
public void draw()
System.out.println(“Draw ” + color + ” circle”);
ShapeApp.java
public class ShapeApp
public static void main(String[] args)
Shape rect = new Rectangle();
rect.draw();
System.out.println(“—“);
Shape circle = new Circle();
circle.draw();
Kết quả:
Draw red rectangle
—
Draw red circle
Khi ghi đè những phương thức được định nghĩa trong interface, có một số trong những qui tắc sau:
Khi triển khai interface, có vài quy tắc sau:
Nếu một lớp triển khai đa thừa kế, hoặc một Interface thừa kế từ nhiều Interface thì đó là đa thừa kế.
Trong Java, một lớp chỉ được thừa kế (extends) từ một lớp, hoàn toàn có thể setup (implements) nhiều interface. Tuy nhiên, một interface hoàn toàn có thể thừa kế (extends) nhiều interface.
Một interface không thể setup (implements) interface khác, do interface không phần setup, chỉ chứa những khai báo.
Ví dụ một lớp setup (implements) nhiều interface:
public interface Shape
void draw();
public interface Color
String getColor();
public class Rectangle implements Shape, Color
@Override
public void draw()
System.out.println(“Draw ” + this.getColor() + ” rectangle”);
@Override
public String getColor()
return “red”;
Ví dụ interface thừa kế (extend) nhiều interface
public interface Shape
void draw();
public interface Color
String getColor();
public interface ShapeColor extends Shape, Color
public class Circle implements ShapeColor
@Override
public void draw()
System.out.println(“Draw ” + this.getColor() + ” circle”);
@Override
public String getColor()
return “red”;
Câu hỏi: Đa thừa kế không được tương hỗ thông qua lớp trong Java nhưng là hoàn toàn có thể bởi Interface, tại sao?
Như đã trình làng, thừa kế không được tương hỗ thông qua lớp. Nhưng nó được tương hỗ bởi Interface chính bới không còn tính lưỡng nghĩa khi trình triển khai được phục vụ bởi lớp Implementation.
Ví dụ đa thừa kế với Interface
public interface Printable
void print();
public interface Showable
void print();
public class InterfaceDemo implements Printable, Showable
public void print()
System.out.println(“Welcome to gpcoder”);
public static void main(String args[])
InterfaceDemo obj = new InterfaceDemo();
obj.print();
Trong ví dụ trên, interface Printable và Showablecó cùng những phương thức print() nhưng trình triển khai của nó được phục vụ bởi lớp InterfaceDemo, vì thế không còn tính lưỡng nghĩa ở đây.
Ví dụ đa thừa kế với class
public class Printable
void print()
System.out.println(“Printable”);
public class Showable
void print()
System.out.println(“Showable”);
// Không thể thực thi đa thừa kế với class
public class InterfaceDemo extends Printable, Showable
public static void main(String args[])
InterfaceDemo obj = new InterfaceDemo();
obj.print(); // Không thể xác lập được gọi phương thức print() của class nào
Trong ví dụ trên, lớpPrintable và Showablecó cùng những phương thức print() vàInterfaceDemo thừa kế 2 class đó không override lại phương thức print() nên trình biên dịch không biết thực thi phương thức print() của lớpPrintable hay là của lớpShowable. Để đảm bảo bảo vệ an toàn và uy tín và giảm tính phức tạp của khối mạng lưới hệ thống nên Java không tương hỗ đa thừa kế riêng với class.
Đó là một Interface mà không còn thành viên nào. Ví dụ: Serializable, Cloneable, Remote, Chúng được sử dụng để phục vụ một số trong những thông tin thiết yếu tới JVM để mà JVM hoàn toàn có thể thực thi một số trong những hoạt động và sinh hoạt giải trí hữu ích.
Ví dụ
public interface Serializable
Có hai mục tiêu thiết kế hầu hết của tagging interface là:
Một Interface hoàn toàn có thể có Interface khác, đó là lồng Interface.
Ví dụ:
interface Printable
void print();
interface MessagePrintable
void msg();
So sánh abstract class và interface trong JavaLớp trừu tượng (abstract class)InterfaceThể hiện tính trừu tượng
Phiên bản Java 8, hoàn toàn có thể thêmdefault và static methods.
Phiên bản Java 9, hoàn toàn có thể thêm private methods.Lớp trừu tượng không tương hỗ đa kế thừaInterface tương hỗđa thừa kếLớp trừu tượng hoàn toàn có thể có những biếnfinal, non-final, static và non-staticInterface chỉ có những biếnstatic finalLớp trừu tượng hoàn toàn có thể có phương thức static, phương thức main và constructorInterface không thể có phương thức static, main hoặc constructor.Từ khóa abstract được sử dụng để khai báo lớp trừu tượngTừ khóa interface được sử dụng để khai báo InterfaceLớp trừu tượng hoàn toàn có thể phục vụ trình triển khai của InterfaceInterface không phục vụ trình triển khai rõ ràng của lớp abstractVí dụ:
public abstract class Shape
public abstract void draw();
Ví dụ:
public interface Drawable
void draw();
Sử dụng Abstract class khi toàn bộ chúng ta chỉ hoàn toàn có thể hoàn thành xong một vài hiệu suất cao (method/ function) chuẩn của khối mạng lưới hệ thống, một vài hiệu suất cao còn sót lại những lớp extends phải hoàn thành xong. Những tính năng đã hoàn thành xong này vẫn sử dụng như thông thường, đấy là những tính năng chung.Sử dụng Interface khi bạn muốn tạo dựng một bộ khung chuẩn gồm những hiệu suất cao (method/ function) mà toàn bộ module/project nên phải có. Các module phảiimplements toàn bộ hiệu suất cao đã được định nghĩa.
Nói về Abtract Class và Interface, đôi lúc bạn sẽ gặp một số trong những cách gọi: Khi một class extendmột class/ abtract class thì nghĩa là ta đang thể hiện quan hệis-a(là), còn khiimplementmộtinterface, thì ta đang thể hiện quan hệhas-a(có, haythực hiện).
Ví dụ:
//Programmerlà Person,thực thi việcProgramming, Debugging
class Programmer extends Person implements Programming, Debugging
//Rectangle là Shape,cóWidth, Height
class Rectangle extends Shape implements Width, Height
Tài liệu tìm hiểu thêm
Nếu bạn thấy hay thì hãy chia sẻ nội dung bài viết cho mọi người nhé!
Hướng dẫn sử dụng plugin JadClipse để xem nội dung file .class
Xử lý ngoại lệ trong Java (Exception Handling)
phản hồi
Bạn vừa Read Post Với Một số hướng dẫn một cách rõ ràng hơn về Video Abstract là gì trong Java tiên tiến và phát triển nhất
Bạn đang tìm một số trong những Share Link Cập nhật Abstract là gì trong Java Free.
Nếu sau khi đọc nội dung bài viết Abstract là gì trong Java vẫn chưa hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Mình lý giải và hướng dẫn lại nha
#Abstract #là #gì #trong #Java
Tra Cứu Mã Số Thuế MST KHƯƠNG VĂN THUẤN Của Ai, Công Ty Doanh Nghiệp…
Các bạn cho mình hỏi với tự nhiên trong ĐT mình gần đây có Sim…
Thủ Thuật về Nhận định về nét trẻ trung trong môi trường tự nhiên vạn…
Thủ Thuật về dooshku là gì - Nghĩa của từ dooshku -Thủ Thuật Mới 2022…
Kinh Nghiệm Hướng dẫn Tìm 4 số hạng liên tục của một cấp số cộng…
Mẹo Hướng dẫn Em hãy cho biết thêm thêm nếu đèn huỳnh quang không còn…