Java 46. Hiểu rõ về INTERFACE trong lập trình Java



    Bản quyền thuộc về TITV.vn, 
    vui lòng không đăng tải lại nội dung từ trang này.

    Video giải thích chi tiết


     Giới thiệu về Interface 

    Interface là gì?

    Một Interface trong Java là một bản thiết kế của một lớp.
    Nó chỉ có các phương thức trừu tượng và các hằng số.
    Tất cả các hằng số được mặc định là ở dạng  public static final.
    Tất cả các phương thức là ở dạng public.
    Tương tự như lớp abstract, nó không thể được khởi tạo thành đối tượng.

    Mục đích:

    Để thu được tính trừu tượng hoàn toàn và đa kế thừa trong Java.

    Lưu ý khi sử dụng:

    Một lớp có thể triển khai một hoặc nhiều interface tại một thời điểm.
    Một interface có thể kế thừa từ một interface khác, tương tự cách một lớp có thể kế thừa lớp khác.

    Ví dụ:

    a, Tạo ra Interface có tên là MayTinhBoTuiInterface, có các phương thức mặc định là cộng, trừ, nhân, chia hai số thực.

    Xây dựng các lớp hiện thực hóa Interface bên trên có tên là: MayTinhCasioFX500 MayTinhVinaCal500MS.

    b, Tạo ra  Interface có tên là SapXepInterface, có các phương thức sắp xếp tăng và sắp xếp giảm một mảng số nguyên.

    Xây dựng các lớp hiện thực hóa Interface bên trên có tên là: SapXepChen SapXepChon.


    c, Xây dựng lớp hiện thực cả hai Interface ở câu a và b có tên là PhanMemMayTinhBoTui

    Thuật toán sắp xếp chèn

    void insertionSort(int arr[], int n)

    {

       int i, key, j;

       for (i = 1; i < n; i++)

       {

           key = arr[i];

           j = i-1;

      

           /* Di chuyển các phần tử có giá trị lớn hơn giá trị

           key về sau một vị trí so với vị trí ban đầu

           của nó */

           while (j >= 0 && arr[j] > key)

           {

               arr[j+1] = arr[j];

               j = j-1;

           }

           arr[j+1] = key;

       }

    }



    Thuật toán sắp xếp chọn

    void selectionSort(int arr[], int n)

    {

        int i, j, min_idx;

        // Di chuyển ranh giới của mảng đã sắp xếp và chưa sắp xếp

        for (i = 0; i < n-1; i++)

        {

        // Tìm phần tử nhỏ nhất trong mảng chưa sắp xếp

        min_idx = i;

        for (j = i+1; j < n; j++)

            if (arr[j] < arr[min_idx])

            min_idx = j;

      

        // Đổi chỗ phần tử nhỏ nhất với phần tử đầu tiên

            swap(arr[min_idx], arr[i]);

        }

    }




     Viết chương trình 

    
    
    public interface MayTinhBoTuiInterface {
    	public abstract double cong(double a, double b);
    	
    	public double tru(double a, double b);
    	
    	public double nhan(double a, double b);
    	
    	public double chia(double a, double b);
    }
    
    
         
    
    
    public class MayTinhCasioFX500 implements MayTinhBoTuiInterface{
    
    	@Override
    	public double cong(double a, double b) {
    		return a+b;
    	}
    
    	@Override
    	public double tru(double a, double b) {
    		return a-b;
    	}
    
    	@Override
    	public double nhan(double a, double b) {
    		return a*b;
    	}
    
    	@Override
    	public double chia(double a, double b) {
    		return a/b;
    	}
    	
    }
    
    
         
    
    
    public class MayTinhVinacal500 implements MayTinhBoTuiInterface{
    
    	@Override
    	public double cong(double a, double b) {
    		return a-b;
    	}
    
    	@Override
    	public double tru(double a, double b) {
    		return a-b;
    	}
    
    	@Override
    	public double nhan(double a, double b) {
    		return a*b;
    	}
    
    	@Override
    	public double chia(double a, double b) {
    		return a/b;
    	}
    
    }
    
    
         
    
    
    public interface SapXepInterface {
    	public void sapXepTang(double[] arr);
    	public void sapXepGiam(double[] arr);
    }
    
    
         
    
    
    public class SapXepChen implements SapXepInterface {
    
    	@Override
    	public void sapXepTang(double[] arr) {
    		int n = arr.length;
    		double key;
    		int i, j;
    		for (i = 1; i < n; i++) {
    			key = arr[i];
    			j = i - 1;
    
    			while (j >= 0 && arr[j] > key) {
    				arr[j + 1] = arr[j];
    				j = j - 1;
    			}
    			arr[j + 1] = key;
    		}
    	}
    
    	@Override
    	public void sapXepGiam(double[] arr) {
    		int n = arr.length;
    		double key;
    		int i, j;
    		for (i = 1; i < n; i++) {
    			key = arr[i];
    			j = i - 1;
    
    			while (j >= 0 && arr[j] < key) {
    				arr[j + 1] = arr[j];
    				j = j - 1;
    			}
    			arr[j + 1] = key;
    		}
    	}
    
    }
    
    
         
    
    
    public class SapXepChon implements SapXepInterface {
    
    	@Override
    	public void sapXepTang(double[] arr) {
    		int n = arr.length;
    		int i, j, min_idx;
    		for (i = 0; i < n - 1; i++) {
    			min_idx = i;
    			for (j = i + 1; j < n; j++)
    				if (arr[j] < arr[min_idx])
    					min_idx = j;
    			double temp = arr[min_idx];
    			arr[min_idx] = arr[i];
    			arr[i] = temp;
    		}
    	}
    
    	@Override
    	public void sapXepGiam(double[] arr) {
    		int n = arr.length;
    		int i, j, min_idx;
    		for (i = 0; i < n - 1; i++) {
    			min_idx = i;
    			for (j = i + 1; j < n; j++)
    				if (arr[j] > arr[min_idx])
    					min_idx = j;
    			double temp = arr[min_idx];
    			arr[min_idx] = arr[i];
    			arr[i] = temp;
    		}
    	}
    
    }
    
    
         
    
    
    public class PhanMemMayTinh implements MayTinhBoTuiInterface, SapXepInterface{
    
    	@Override
    	public double cong(double a, double b) {
    		return a+b;
    	}
    
    	@Override
    	public double tru(double a, double b) {
    		return a-b;
    	}
    
    	@Override
    	public double nhan(double a, double b) {
    		return a*b;
    	}
    
    	@Override
    	public double chia(double a, double b) {
    		return a/b;
    	}
    	
    	@Override
    	public void sapXepTang(double[] arr) {
    		int n = arr.length;
    		double key;
    		int i, j;
    		for (i = 1; i < n; i++) {
    			key = arr[i];
    			j = i - 1;
    
    			while (j >= 0 && arr[j] > key) {
    				arr[j + 1] = arr[j];
    				j = j - 1;
    			}
    			arr[j + 1] = key;
    		}
    	}
    
    	@Override
    	public void sapXepGiam(double[] arr) {
    		int n = arr.length;
    		double key;
    		int i, j;
    		for (i = 1; i < n; i++) {
    			key = arr[i];
    			j = i - 1;
    
    			while (j >= 0 && arr[j] < key) {
    				arr[j + 1] = arr[j];
    				j = j - 1;
    			}
    			arr[j + 1] = key;
    		}
    	}
    
    
    }
    
    
         
    
    import java.util.Iterator;
    
    public class Test {
    	public static void main(String[] args) {
    		System.out.println("Test câu a: ");
    		MayTinhCasioFX500 mfx500 = new MayTinhCasioFX500();
    		MayTinhVinacal500 mvn500 = new MayTinhVinacal500();
    		
    		System.out.println("5+3="+ mfx500.cong(5, 3));
    		System.out.println("4*5="+ mvn500.nhan(4, 5));
    		System.out.println("4/0="+ mvn500.chia(4, 0));
    		
    		System.out.println("Test câu b: ");
    		
    		double[] arr = new double[] {5,1,3,4,5,8,0};
    		double[] arr2 = new double[] {6,2,7,9,2,4,5};
    		SapXepChen sxchen = new SapXepChen();
    		SapXepChon sxchon = new SapXepChon();
    		
    		sxchen.sapXepTang(arr);
    		for (int i = 0; i < arr.length; i++) {
    			System.out.print(arr[i]+" ");
    		}
    		System.out.println();
    		sxchon.sapXepGiam(arr2);
    		for (int i = 0; i < arr2.length; i++) {
    			System.out.print(arr2[i]+" ");
    		}
    		System.out.println();
    		
    		System.out.println("Test câu c:");
    		PhanMemMayTinh pmmt =new PhanMemMayTinh();
    		System.out.println("3+5=" + pmmt.cong(3, 5));
    		double[] arr3 = new double[] {6,2,7,9,2,4,5};
    		pmmt.sapXepTang(arr3);
    		for (int i = 0; i < arr3.length; i++) {
    			System.out.print(arr3[i]+" ");
    		}
    	}
    }
    
    
         

    Bạn có thể thích những bài đăng này:

    1 nhận xét:

    1. em không biết áp dụng bắt lỗi try_catch ở câu a, anh có thế hướng dẫn em được không ạ

      Trả lờiXóa