Thứ Hai, 26 tháng 6, 2017

[Thực tập] Buổi 1: Ôn lại kiến thức nền tảng Java

1. Toán tử instance of
Toán tử instance of được dùng để kiểm tra đối tượng bên trái có phải thuộc kiểu của đối tượng bên phải hay không.
Ví dụ:
 String name = "Tuan";
boolean result = name instanceof String;
System.out.println(result);
//true 

2. Pattern Singeton:
Pattern Singeton được sử dụng trong các trường hợp chỉ duy nhất 1 đối tượng được tạo ra và dùng để sử lý tác vụ. Ví dụ như kết nối tới database, tại 1 thời điểm chỉ có duy nhất một kết nối tới database. Như vậy trường hợp này nên dùng Singeton.

Cách cài đặt Singeton:
public class ClassicSingleton {

   private static ClassicSingleton instance = null;
   private ClassicSingleton() {
      // Exists only to defeat instantiation.
   }

   public static ClassicSingleton getInstance() {
      if(instance == null) {
         instance = new ClassicSingleton();
      }
      return instance; 

 }
}



3. Phương pháp  truyền nhiều tham số cùng kiểu vào trong một phương thức:

Tương tự truyền một mảng vào trong một phương thức thì đây là một cách mà có thể truyền được nhiều tham số vào trong một phương thức:



public class VarargsDemo {

   public static void main(String args[]) {
      // Goi phuong thuc voi bien args  
   printMax(34, 3, 3, 2, 56.5);
      printMax(new double[]{1, 2, 3});
   }

   public static void printMax( double... numbers) {
   if (numbers.length == 0) {
      System.out.println("Khong co tham so nao duoc truyen");
      return;
   }

   double result = numbers[0];

   for (int i = 1; i <  numbers.length; i++)
      if (numbers[i] >  result)
      result = numbers[i];
      System.out.println("Gia tri max la " + result);
   }
}
 

4. Phương thức finalize():
Là phương thức được gọi trước khi Garbage collector tiến hành hủy đối tượng. Phương thức này được sử dụng để chắc chắn rằng một đối tượng sẽ được hủy hoàn toàn.


5. Nạp chồng phương thức:
Nạp chồng phương thức giúp dễ hiểu hơn, ví dụ cùng là hàm sum nhưng là sum của 2 tham số và sum của 3 tham số nếu phải viết thì viết sum1(a, b) sum2(a,b,c) thì sẽ gây khó khăn trong quá trình sử dụng. Vì vậy để dễ hiểu thì người ta có thể dùng nạp chồng phương thức.
Có những dạng nạp chồng phương thức sau:
- Khác nhau về số lượng tham số
- Khác nhau về kiểu tham số chuyền vào
Chú ý:
- Không thể nạp chồng phương thức đối với kiểu trả về vì sẽ gây ra lỗi lưỡng nghĩa. ví dụ float sum(int a, int b), và int sum(int a, int b) khi đó giả sử int result = sum(a,b) thì phương thức nào sẽ được gọi. Tuy nhiên nếu là float sum(a,b) và int sum(a,b,c) thì lại được. 
- Phương thức main có thể nạp chồng như những phương thức khác vào gọi trong hàm main chính như bình thường.


6. Biến Static ? Tại sao phải sử dụng biến static?
Biến static được khai báo với  từ khóa static trước tên biến. Mục đích sử dụng biến static là để chương trình sử dụng bộ nhớ hiệu quả hơn khi mà biến static chỉ được khai báo một lần trong heap và được sử dụng lại cho các đối tượng khác nhau. Ví dụ: Đối tượng student đều là sinh viên trường Đại học Công nghệ thì biến trạng thái college đều là công nghệ. Vì thế để không phải tạo đi tạo lại biến college cùng chung một giá trị thì người ta dùng từ khóa static. 
Ví dụ: static String college ="Cong nghe"

Đối với phương thức static cũng được khai báo từ static trước tên phương thức, khi đó phương thức sẽ là của chung của lớp, khi gọi đến phương thức không cần tạo đối tượng chỉ cần dùng chính tên lớp gọi cũng được.


Một ví dụ để minh họa:


class Counter{  
int count=0; //se lay bo nho (memory) khi bien instance duoc tao  
 //Ket qua thuc hien chuong trinh hien ra 3 so 1 o 3 dong 
Counter(){  
count++;  
System.out.println(count);  
} 
 
static int count1 =0;
 
Counter1(){
   count1++;
  System.out.println(count1); 
} 
 
 
 
 public static void main(String args[]){  
  
Counter c1=new Counter();  
Counter c2=new Counter();  
Counter c3=new Counter(); 
 // Ket qua là 1 1 1
Counter c4 = new Counter1();
Counter c5 = new Counter1();
Counter c6 = new Counter1();
//Kết quả là 1 2 3
 }   
}

 

Phân biệt 2 trường hợp trên thì ta thấy là  riêng biến static chđược tạo một lần và giá trị của nó sđược lưu lại trong các lần tạo đối tượng khác nhau.

7. This  


- Dùng this vào trong các công việc sau:
+ Dùng để phân biệt tham số các  thuộc tính của lớp và các tham sđầu vào. 
+ Dùng đgọi constructor mặc định, vị tri đặt this() luôn phải là đầu của hàm gọi.
+ Dùng làm tham số trong các phương thức.
+ Dùng làm giá trị trả về.
+ Từ khóa this còn được ngầm định trong các lệnh gọi phương thức ở trong lớp hiện tại.


8. Kế thừa, mối quan hIS-A. Tại sao Java không dùng đa kế thừa?
    
 Kế thừa là một kỹ thuật mà đối tượng thu được tất cả các thuộc tính hành vi của lớp cha và bổ sung thêm các thuộc tính và các hành vi mới.
Các từ khóa được sử dụng: extends và implements.
Sử dụng từ khóa extends có thể kế thừa toàn b những phương thức thuộc tính không phải là private của lớp cha.

Ví d
class Employee{  
 float salary=40000;  
}  
class Programmer extends Employee{  
 int bonus=10000;  
 public static void main(String args[]){  
   Programmer p=new Programmer();  
   System.out.println("Luong Lap trinh vien la:"+p.salary);  
   System.out.println("Bonus cua Lap trinh vien la:"+p.bonus);  
}  
} 
 
 













Trong Java không dùng đa kế thừa để tránh trường hợp lưỡng nghĩa, lớp A kế thừa cả B và C. Trong khi đó cả B và C cùng cài đặt 1 phương thức, khi đó nếu A gọi đến phương thức đó thì Java không biết lựa chọn cái nào hết.

9. Super

Các chức năng cơ bản của super trong java là:
- Dùng super để truy nhập đến các thuộc tính của lớp cha gần nhất. 
- Dùng super để truy nhập, triệu hồi đến lớp constructer() của lớp cha gần nhất. Mặc định nếu không có từ supper() thì trong hàm tự gọi đến các constructer() của lớp cha gần nhất
- Dùng super để gọi, triệu hồi đến các phương thức của lớp cha gần nhất.

 

Không có nhận xét nào:

Đăng nhận xét