Lập trình Java cơ bản đến nâng cao – Buổi 2

Hi các bạn, nay mình tiếp tục bài Java buổi 2 nhé

Chuyên mục chúng ta hôm nay là OOP(hướng đối tượng) trong Java

Điều đầu tiên các bạn làm thì cứ tạo project + package như bình thường nhé

1/ Sơ lược về hướng đối tượng trong Java

OOP của Java rất giống với C# và cũng rất đa dạng.

Thuộc tính nếu ko kèm keyword private/public/protected thì sẽ mặc định là public

Chúng ta cũng chỉ New => Class bình thường, có điều nhớ bỏ tick ở public void main nha

Một Class đơn giản:

public class TestClass {
	private String name;

	public void nhap() {
		Scanner is = new Scanner(System.in);
		System.out.print("Nhap ten: ");
		name = is.nextLine();
	}

	public void xuat() {
		System.out.print("Ho ten: " + name);
	}
}

Class này nhập tên và xuất tên đơn giản.

2/ Hàm khởi tạo(Constructor)

Hàm khởi tạo có tên giống như tên class và không có kiểu trả về nhé. VD:

public class Test {
	public Test() {
		System.out.println("Ham khoi tao thanh cong");
	}
	
	// chung ta co the nap chong toan tu nhu C++
	public Test(int x) {
		System.out.println("Ham khoi tao thanh cong" + x);
	}
}

Java không cần hàm hủy bỏ bởi vì Java sẽ tự xóa hết rác khi bạn xài, một tính năng hay của Java.

3/ Kế thừa

Cái này quá quen thuộc rồi nhỉ các bạn, về kế thừa thì cũng như bao ngôn ngữ khác. Câu lệnh kế thừa của Java lại giống PHP

class Test2 extends Test {
	public void Test() {
		System.out.println("Day la class con");
	}

}

Đây là class 2 kế thừa class bên trên mình đã ghi.

4/ Đa hình

Một trong những cái hay nữa của Java là có tính đa hình như của C++, tuy nhiên cách xài thì hơi khác một chút

Class demo:

package Test;

public class Test {
	public void hamtest() {
		System.out.println("Day la class cha");
	}
}

class Test2 extends Test {
	public void hamtest() {
		System.out.println("Day la class con 2");
	}

}

class Test3 extends Test {
	public void hamtest() {
		System.out.println("Day la class con 3");
	}

}

Main:

package Test;

public class Main {

	public static void main(String[] args) {
		Test z = new Test();
		z.hamtest();
		
		z = new Test2();
		z.hamtest();
		
		z = new Test3();
		z.hamtest();
	}

}

Cách xài hơi khác C++ fải ko :D, nhưng nó cũng tương tự chứ ko khác nhiều lắm

5/ Class trừu tượng

Các bạn có nhớ trong class cha ở C++ có hàm trừu tượng vd: int diemSo() = 0; chứ?

Java cũng có hàm trừu tượng cho các bạn xài đấy :D. Chúng ta sẽ gọi hàm ở class cha và sẽ định nghĩa ở class con.

Khi bạn New => Class thì sẽ có abstract (trừu tượng), nhớ tick vào rồi hãy tạo nhé 😀

Vd:

package Test;

public abstract class Test {
	// day la ham truu tuong, 2 class kia can dinh nghia ham nay
	public abstract void hamtest();
}

class Test2 extends Test {
	public void hamtest() {
		System.out.println("Day la class con 2");
	}

}

class Test3 extends Test {
	public void hamtest() {
		System.out.println("Day la class con 3");
	}

}

Và cách xài cũng khác đa hình luôn nha, vd:

package Test;

public class Main {

	public static void main(String[] args) {
		//dinh nghia khac
		Test z;
		
		z = new Test2();
		z.hamtest();
		
		z = new Test3();
		z.hamtest();
	}

}

6/ Hàm trong class xài luôn ko cần khởi tạo:

Cũng giống như C#, bạn chỉ cần thêm keyword như vậy vd:

public static void cong(int x, int y);

Là hàm này các bạn có thể gọi ra bt ở hàm main (ví dụ class mình là Test):

int kq = Test.cong(10, 15); //

Cũng một phần tiện lợi fải ko nhỉ?

Bài buổi 2 đến đây là hết nha các bạn.

Hẹn các bạn vào buổi tiếp theo 😀

Cám ơn các bạn đã quan tâm theo dõi!

facebook
Seth Phát

Seth Phát

Mình là Phát - biệt danh Seth Phát. Hiện đang là một Sr. Full-Stack Engineer. Mình là một người yêu thích và đam mê lập trình và hiện tại đang theo về phần Web là chủ yếu. Mạnh Back-end và khá Front-end, vẫn đang theo đều cả 2 :v. Còn gì bằng khi được làm những thứ mà mình yêu thích, đam mê ;)

Bình luận qua Facebook