Thứ Bảy, 20 tháng 8, 2016

JAVA 3

  1. Bài 5 - Lập trình OOP (Hướng đối tượng trong java)

    Đây là một class, class này có hai property (thuộc tính) là name và age
    1
    2
    3
    4
    5
    public class Person {
        String name;
        int age;
    }


    Đây là một class, class này ngoài property còn có constructor (khởi tạo) của class đó

    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Person {
        String name;
        int age;
        public Person(String name) {
            this.name = name;
        }
    }


    Trong cái constructor này hãy lưu ý một điều, đó là biến this. Biến this có nghĩa là bản thân cái class đó (ở đây là class Person).
    Trong class Person có một property là age, câu this.age = age có nghĩa là cái thuộc tính age của class Person sẽ nhận giá trị ở cái đối số age do constructor Person(int age) đưa vào.
    Lưu ý là mọi class đều có sẵn ít nhất một constructor không có đối số.
    Đây là một class, class này ngoài property, constructor còn có một behavior (hành vi)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Person {
        String name;
        int age;
        public Person(int age) {
            this.age = age;
        }
        public void Nhap() {
            nameonsole.readLine("Nhap ho ten:");
        }
    }


    Khi ta viết câu lệnh sau
    Person personOne = new Person(12);
    Thì ta đã tạo ra một instance (thể hiện) là personOne của class Person 
  2. Những thành viên đã cảm ơn mr.datnh:

    Java (12-08-2014)
  3. #5
    mr.datnh Đang Ngoại tuyếnAdministrator
    Ngày tham gia
    Jun 2013
    Bài viết
    926
    Thanks
    24
    Thanked 283 Times in 217 Posts

    Bài 5 - Lập trình OOP (tiếp)

    Khai báo một class
    public abstract class MyClass {}
    Từ thứ 1 là khai báo quyền truy xuất và kế thừa,có 3 loại
    -public:được phép truy xuất từ bất cứ nơi nào và bất cứ lớp nào cũng được quyền kế thừa
    -protected:chỉ có phương thức cùng gói được phép truy xuất và kế thừa
    -private:chỉ có phương thức cùng gói được phép truy xuất nhưng không lớp nào được phép kế thừa
    -nếu không khai báo,mặc định là protected
    Từ thứ 2 là khai báo một lớp trừu tượng hay là không trừu tượng
    Nhiem vu: tao 1 lop Person, tao tiep 2 lop Students va Teachers ke thua lop Person, tao lop Execute chua ham chinh de chay chuong trinh.

    Person Class

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    import corejava.*;
    abstract class Person {
        // cai nay goi la cac property hay state-thuoc tinh cua doi tuong
        String hoten;
        int age;
        String diachi;
        int luong;
        // cac constructor
        public Person(int age) {
            this.age = age;
        }
        // cac method hay behavior-hanh vi cua doi tuong
        public void Nhap() {
            hoten = Console.readLine("Nhap ho ten:");
            diachi = Console.readLine("Nhap dia chi:");
        }
        // vi la 1 class thuoc loai abstract nen Person duoc phep khai bao cac
        // method khong co noi dung, noi dung cua class In se duoc cac lop ke thua
        // no them vao noi dung cua rieng no
        public abstract void In();
        public abstract int Tinhluong();
    }


    Student class

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    import corejava.*;
    class Students extends Person {
        int MaSV, Malop;
        public void Nhap() {
            super.Nhap();
            MaSV = Console.readInt("Nhap ma SV:");
            Malop = Console.readInt("Nhap ma lop:");
        }
        public void In() {
            System.out.println(hoten);
            System.out.println(diachi);
            System.out.println(MaSV);
            System.out.println(Malop);
        }
        public int Tinhluong() {
            return 150000;
        }
    }


    Từ khó super sẽ gọi hàm Nhap() từ lớp Person là cha của lớp Students

    Teacher class

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import corejava.*;
    class Teachers extends Person {
        int Makhoa;
        public void Nhap() {
            super.Nhap();
            Makhoa = Console.readInt("Nhap ma khoa::");
        }
        public void In() {
            System.out.println(hoten);
            System.out.println(diachi);
            System.out.println(Makhoa);
        }
        public int Tinhluong() {
            return 500000;
        }
    }
    Execute class

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import corejava.*;
    class Execute {
        public static void main(String args[]) {
            Students st = new Students();
            st.Nhap();
            st.In();
            st.luong = st.Tinhluong();
            Teachers tc = new Teachers();
            tc.Nhap();
            tc.In();
            tc.luong = tc.Tinhluong();
        }
    }
  4. Những thành viên đã cảm ơn mr.datnh:

    Java (12-08-2014)
  5. #6
    mr.datnh Đang Ngoại tuyếnAdministrator
    Ngày tham gia
    Jun 2013
    Bài viết
    926
    Thanks
    24
    Thanked 283 Times in 217 Posts
    Khai báo một thuộc tính:
    Khai báo 1 thuộc tính
    public static void temp;
    Từ thứ 1 là khai báo quyền truy xuất, có 3 loại:
    - public:được phép truy xuất từ bất cứ nơi nào
    - protected:chỉ có lớp con mới được phép truy xuất
    - private:chỉ có lớp đó xài(thuộc tính riêng của nó)
    - Nếu không khai báo,mặc định là protected

    b.Từ thứ 2 là khai báo cách truy xuất (static)
    static(tĩnh)
    - Nếu không khai báo,mặc định là không tĩnh
    Tất cả các đối tượng thể hiện từ lớp cha đều được phép thay đổi giá trị của các thuộc tính không tĩnh,còn giá trị của thuộc tính tĩnh thì không được phép thay đổi

    1
    2
    3
    4
    5
    6
    public class Car {
        public string branch;
        public int cost;
        public static int tire = 4;
    }


    Như ví dụ trên,tất cả các lớp con của lớp Car (như ToyotaCar,Peugeot,Mazda…) đều được phép thay đổi các thuộc tính branch hay cost để phù hợp cho riêng mình,nhưng thuộc tính tire (số bánh xe) không được phép thay đổi vì là thuộc tính tĩnh
    Nói cách khác, chỉ có một và chỉ một thuộc tính có tên là tire trong class Car và tất cả các class con của nó, vì vậy gọi là tĩnh

    Khai báo một hành vi
    Một phương thức được khai báo như sau
    public static double ketqua()

    Có 3 chỉ định truy xuất là public, protected và private:
    - public:được phép truy xuất từ bất cứ nơi nào
    - protected:chỉ có lớp kế thừa lớp chứa nó được truy xuất
    - private:chỉ lớp chứa nó được truy xuất(dùng nội bộ)
    - Nếu không khai báo,mặc định là protected
    Có 6 chỉ định thuộc tính là static, abstract, final, native, synchronized (đồng bộ) và volatile (linh hoạt)
    static(tĩnh)
    - Nếu không khai báo,mặc định là không tĩnh


    1
    2
    3
    4
    5
    6
    class TestObject {
        static void StaticMethod() {…}
        void NonStaticMethod() {…}
    }


    Nếu là một phương thức không tĩnh, đầu tiên bạn phải khởi tạo một đối tượng,sau đó mới được phép gọi phương thức:
    1
    2
    TestObject test=new TestObject();
    test.NonStaticMethod();


    Nếu là một phương thức tĩnh,bạn được phép gọi trực tiếp từ lớp:

    1
    2
    3
    TestObject.StaticMethod();
    abstract(trừu tượng)


    Một phương thức trừu tượng không có nội dung.Nội dung của nó sẽ được các lớp con tùy biến và phát triển theo hướng của riêng nó.
    - final: không thể được extends hay override (ghi đè)
    - native: thân phương thức viết bằng C hay C++
    - synchronized: chỉ cho phép 1 thread truy cập vào khối mã ở cùng một thời điểm
    - volatile: sử dụng với biến để thông báo rằng giá trị của biến có thể được thay đổi vài lần vì vậy không ghi vào thanh ghi

    Từ thứ 3 là giá trị trả về. Nếu không có giá trị trả về thì là void

0 nhận xét: