Java OOP Cheat Sheet

Bởi tr1nh

Lập trình hướng đối tượng hay còn được gọi là OOP (Object-Oriented Programming) là một trong những trụ cột chính của Java để tận dụng sức mạnh và khả năng dễ sử dụng của nó. Nếu bạn là một lập trình viên Java đầy tham vọng, bạn chắc chắn cần phải nắm vững các khái niệm OOP của Java. Để giúp bạn đạt được điều này, chúng tôi mang đến cho bạn Cheat Sheet Java OOP. Cheat Sheet này sẽ đóng vai trò như một khóa học cấp tốc dành cho người mới bắt đầu học Java và giúp bạn có kiến thức chuyên môn về các khái niệm OOP của Java.

Cheat Sheet lập trình hướng đối tượng Java

Java là một ngôn ngữ lập trình Hướng đối tượng vì nó được mô hình hóa và tổ chức xung quanh các đối tượng hơn là các hành động; và dữ liệu hơn là logic. Nó đơn giản hóa việc phát triển và bảo trì phần mềm bằng cách cung cấp một số tính năng rất hấp dẫn. Lập trình hướng đối tượng trong Java nhằm mục đích triển khai các thực thể trong thế giới thực như đối tượng, lớp, trừu tượng hóa, kế thừa, đa hình…

Java Logo - Core Java Cheatsheet - Edureka
Object Oriented Programming - Java OOP Cheat Sheet - Edureka

Classes & Objects (Lớp & Đối tượng)

Các lớp Java

Một lớp trong Java như một bản thiết kế về tất cả dữ liệu của bạn. Nó chứa các trường dữ liệu (biến) và các phương thức để mô tả hành vi của một đối tượng.

class Test {        member variables // class body        methods }
Code language: Java (java)

Đối tượng Java

Một đối tượng là một phần tử chính trong một lớp gồm trạng thái và hành vi. Nó đại diện cho một lớp có thể truy cập dữ liệu của bạn. Từ khóa ‘new’ được sử dụng để tạo ra đối tượng.

//Declaring and Initializing an object Test t = new Test();
Code language: Java (java)

Constructors (Hàm khởi tạo)

Hàm khởi tạo

Hàm khởi tạo là một khối mã khởi tạo một đối tượng mới. Nó tương tự như một phương thức trong Java nhưng không có bất kỳ kiểu trả về nào và tên của nó giống với tên lớp. Có 2 loại hàm khởi tạo:

  1. Hàm khởi tạo mặc định (Hàm khởi tạo không đối số)
  2. Hàm khởi tạo có đối số

Hàm khởi tạo mặc định

Hàm khởi tạo này được tạo theo mặc định bởi trình biên dịch Java tại thời điểm tạo lớp nếu không có hàm khởi tạo nào khác được khai báo trong lớp. Đôi khi nó còn được gọi là hàm khởi tạo không đối số vì nó không chứa bất kỳ đối số nào.

class Test{ // Added by the Java Compiler at the Run Time public Test(){ } public static void main(String args[]) { Test testObj = new Test(); } }
Code language: Java (java)

Hàm khởi tạo có đối số

Hàm khởi tạo này được gọi là có đối số vì nó chứa một hoặc nhiều tham số. Nó được sử dụng để cung cấp các giá trị khác nhau cho các đối tượng riêng biệt tại thời điểm tạo ra chúng.

public class Test { int appId; String appName; //parameterized constructor with two parameters Test(int id, String name) { this.appId = id; this.appName = name; } void info() { System.out.println("Id: "+appId+" Name: "+appName); } public static void main(String args[]){ Test obj1 = new Test(11001,"Facebook"); Test obj2 = new Test(23003,"Instagram"); obj1.info(); obj2.info(); } }
Code language: Java (java)

Modifiers (Chỉ định truy cập trong Java)

Access Modifiers

Access modifiers trong Java chỉ định phạm vi khả năng truy cập dữ liệu của thành viên, phương thức, hàm khởi tạo hoặc lớp.

Phạm viPrivateDefaultProtectedPublic
Cùng lớpĐúngĐúngĐúngĐúng
Subclass cùng packageKhôngĐúngĐúngĐúng
non-subclass cùng packageKhôngĐúngĐúngĐúng
subclass không cùng packageKhôngKhôngĐúngĐúng
non-subclass không cùng packageKhôngKhôngKhôngĐúng

Non Access Modifiers

Non Access Modifiers không thay đổi khả năng truy cập của các biến và phương thức thay vì cung cấp các thuộc tính đặc biệt. Chúng cũng có thể thay đổi hành vi của các phần tử.

KiểuPhạm vi
StaticLàm cho thuộc tính phụ thuộc vào một lớp
FinalSau khi khai báo, không cho phép bất kỳ thay đổi nào
AbstractLàm cho các lớp và phương thức trở nên trừu tượng
SynchronizedĐược sử dụng để đồng bộ hóa các threads

Inheritance (Kế thừa)

Các loại kế thừa trong Java

Kế thừa là thuộc tính của một lớp con (child/derived/subclass), cho phép nó kế thừa các thuộc tính (dữ liệu) và chức năng (phương thức) từ lớp cha (parent/base/superclass).

  • Tất cả các đối tượng đều có lớp đối tượng là cha trên cùng của chúng.
  • Các phương thức có thể được ghi đè nhưng các thuộc tính thì không.
  • Để gọi hàm khởi tạo của lớp cha, hãy sử dụng super().

Java hỗ trợ 5 kiểu kế thừa:

  1. Single Inheritance (đơn kế thừa)
  2. Multi-level Inheritance (kế thừa nhiều cấp)
  3. Hierarchical Inheritance (kế thừa phân cấp)
  4. Hybrid Inheritance (kế thừa lai)
  5. Multiple Inheritance (đa kế thừa)

Single Inheritance

Trong trường hợp này, một lớp kế thừa các thuộc tính của một lớp cha.

Class A{ //your parent class code } Class B extends A { //your child class code }
Code language: Java (java)

Multi-level Inheritance

Trong kế thừa nhiều cấp, một lớp có nhiều hơn một lớp cha nhưng ở các cấp kế thừa khác nhau.

Class A{ //your parent class code } Class B extends A { //your code } Class C extends B { //your code }
Code language: Java (java)

Hierarchical Inheritance

Trong kế thừa phân cấp, một lớp cha có thể có một hoặc nhiều lớp con.

Class A{ //your parent class code } Class B extends A { //your child class code } Class C extends A { //your child class code }
Code language: Java (java)

Hybrid Inheritance

Kế thừa lai là sự kết hợp của nhiều loại kế thừa trong một chương trình, ví dụ: bạn có thể kết hợp kế thừa đa cấp với kế thừa phân cấp.

A / B C / D E

Multiple Inheritance

Đa kế thừa không được hỗ trợ trong Java vì nó dẫn đến vấn đề kim cương. Vấn đề kim cương là sự mơ hồ của trình biên dịch vì không biết phương thức superclass nào sẽ thực thi trong trường hợp các superclass có một phương thức có cùng tên.

A / {abc()} B C {abc()} / D {?}

*Nhưng có thể đa kế thừa trong Java bằng cách sử dụng các interfaces.

Polymorphism (Đa hình)

Đa hình là khả năng của một biến, hàm hoặc một đối tượng có nhiều dạng. Nó cho phép bạn xác định một interface hoặc phương thức và có nhiều triển khai. Có hai loại đa hình trong Java.

  1. Compile Time Polymorphism (Đa hình compile time)
  2. Runtime Polymorphism (Đa hình lúc runtime)

Compile Time Polymorphism

Còn được gọi là liên kết tĩnh (static binding), vì loại đối tượng được xác định tại thời điểm biên dịch bởi chính trình biên dịch. Ví dụ: Nạp chồng phương thức

class Calculator { static int add(int a, int b){ return a+b; } static double add( double a, double b){ return a+b; } public static void main(String args[]){ System.out.println(Calculator.add(123,17)); System.out.println(Calculator.add(18.3,1.9)); } }
Code language: Java (java)

Runtime Polymorphism

Còn được gọi là liên kết động (dynamic binding) vì phương thức bị ghi đè được giải quyết trong thời gian chạy thay vì thời gian biên dịch. Trong đó, một biến tham chiếu được sử dụng để gọi một phương thức bị ghi đè của một lớp cha trong thời gian chạy. Ví dụ: Ghi đè phương thức.

public class Mobile{ void sms(){ System.out.println("Mobile class"); } } //Extending the Mobile class public class OnePlus extends Mobile{ //Overriding sms() of Mobile class void sms(){ System.out.println(" OnePlus class"); } public static void main(String[] args) { OnePlus smsObj= new OnePlus(); smsObj.sms(); } }
Code language: Java (java)

Abstraction (Trừu tượng)

Các cách để đạt được sự trừu tượng

Trừu tượng là quá trình ẩn các chi tiết và chỉ hiển thị những thứ cần thiết cho người dùng. Bạn có thể đạt được sự trừu tượng hóa theo hai cách trong Java:

  1. Sử dụng lớp trừu tượng (0-100%)
  2. Sử dụng Interface (100%)

Lớp trừu tượng

Lớp trừu tượng là lớp được khai báo bằng từ khóa abstract và không thể khởi tạo được. Vài gợi ý để tạo một lớp trừu tượng:

  • Nó có thể chứa các phương thức trừu tượng và không trừu tượng.
  • Nó cũng có thể chứa các hàm khởi tạo và các phương thức tĩnh.
  • Nó có thể chứa các phương thức final buộc lớp con không thay đổi phần thân của phương thức.
public abstract class MyAbstractClass { public abstract void abstractMethod(); public void display(){ System.out.println("Concrete method"); } }
Code language: PHP (php)

Interface

Một interface trong java là một bản thiết kế của một lớp chứa các hằng số tĩnh và các phương thức trừu tượng. Nó đại diện cho mối quan hệ IS-A. Bạn cần triển khai một interface để sử dụng các phương thức hoặc hằng số của nó.

//Creating an Interface public interface Bike { public void start(); } //Creating classes to implement Bike interface class Honda implements Bike{ public void start() { System.out.println("Honda Bike"); } } class Apache implements Bike{ public void start() { System.out.println("Apache Bike"); } } class Rider{ public static void main(String args[]){ Bike b1=new Honda(); b1.start(); Bike b2=new Apache(); b2.start(); } }
Code language: Java (java)

Encapsulation (Đóng gói)

Đóng gói là quá trình liên kết dữ liệu và code của bạn thành một đơn vị duy nhất bằng cách sử dụng các phương thức getter và setter.

Bạn cần thực hiện hai bước để đóng gói:

  • Khai báo các biến của một lớp là private.
  • Cung cấp các phương thức setter và getter public để có thể sửa đổi và xem các giá trị của biến.
public class Artist { private String name; //getter method public String getName() { return name; } //setter method public void setName(String name) { this.name = name; } } public class Show{ public static void main(String[] args){ //creating instance of the encapsulated class Artist s=new Artist(); //setting value in the name member s.setName("V"); //getting value of the name member System.out.println(s.getName()); } }
Code language: Java (java)

Association (sự kết hợp)

Association là mối quan hệ giữa hai lớp khác nhau được thiết lập thông qua các đối tượng của chúng. Association có nhiều hình thức:

  • One-to-One
  • One-to-Many
  • Many-to-One
  • Many-to-Many.

Aggregation (Tổng hợp)

Aggregation là một dạng Association đặc biệt đại diện cho mối quan hệ Has-A. Nó là một Association một chiều, nơi cả hai mục có thể tồn tại riêng lẻ.

Composition (thành phần)

Composition là một hình thức tổng hợp hạn chế hơn khiến hai thực thể phụ thuộc nhiều vào nhau. Nó đại diện cho một phần của mối quan hệ trong đó đối tượng tổng hợp không thể tồn tại nếu không có thực thể khác.

Tải xuống Java Cheat Sheet cho người mới bắt đầu

Related Posts

Để lại một bình luận