Khóa học free Bài 20: Inner class trong Java

Thảo luận trong 'Java cơ bản' bắt đầu bởi Tiasangmoi92, 20/7/13.

  1. Tiasangmoi92

    Tiasangmoi92 Super Moderator

    Lượt xem: 14,252
    /* Bài viết thuộc loạt bài hướng dẫn trong "Khóa Học Lập Trình Java Miễn Phí"
    trên diễn đàn Android.Vn, bạn có thể vào đây đọc

    để hiểu hơn về khóa học và tham gia ngay cùng mọi người;) */

    Untitled
    1, Khái niệm:

    Một class nằm trong class khác được gọi là inner class. Inner class có thể coi như một thuộc tính của class. Nghĩa là bạn không thể khởi tạo đối tượng B nếu chưa khởi tạo đối tượng A.
    PHP:
    class A{
        class 
    B{
        }
    }
    PHP:
    A obj1 = new A();
    A.B obj2 obj1.new B(); 
    Bởi class B nằm trong class A nên nó có thể truy cập tất cả các thuộc tính hay phương thức của class A
    PHP:
    class A  {
        private 
    int x 8;
        class 
    {
            public 
    void printInt() {
                
    System.out.println(x);
            }
        }
    }
    Để sử dụng method vừa tạo, ta có thể viết:
    obj2.printInt();

    2, Một số ví dụ:

    Ví dụ 1: Ví dụ bên Blog StudyAndShare


    PHP:
    public class DemoJavaAndroidVn {
          public static 
    void main(String[] args) {
                
    Outer out = new Outer();
                
    out.show();
          }
    }
     
    class 
    Outer {
          public 
    void show() {
                
    Inner in = new Inner();
                
    in.display();
          }
     
          class 
    Inner {
                public 
    void display() {
                      
    System.out.println("Đây là inner class.");
                }
          }
    }
     
    class 
    {
          public 
    void show() {
                
    Outer.Inner in = new Outer().new Inner();
                
    in.display();
          }
    }
    Ví dụ 2:
    PHP:
    package javaandroidvn;
     
    class 
    ThoiGian {
     
        public 
    int ngaythangnam;
     
        class 
    Time {
     
            public 
    int giophutgiay;
     
            public 
    void showTime() {
                
    System.out.println("Ngày " ngay "/" thang "/" nam);
                
    System.out.println("Time: " this.gio ": " this.phut ": " this.giay);
            }
        }
    }
     
    public class 
    JavaAndroidVn {
     
        public static 
    void main(String[] args) {
            
    ThoiGian tg = new ThoiGian();
            
    ThoiGian.Time time tg.new Time();
            
    tg.ngay 20;
            
    tg.thang 7;
            
    tg.nam 1996;
            
    time.gio 20;
            
    time.phut 22;
            
    time.giay 01;
            
    time.showTime();
     
        }
    }
    [​IMG]

    Bài tập về nhà::D Làm lại thành thạo các ví dụ trên!

    Đọc thêm: Các lớp con (lớp lồng nhau) trong lập trình Java

    (Chú ý: Các bạn nên tự giác làm bài tập, hoàn thiện rồi đăng lên, các bài bạn đã làm, nên để code trong thẻ code - chọn thẻ PHP cho rõ ràng và để ẩn code trong thẻ ẩn spoiler, để khi click vào mới hiện code lên , trước khi thử sức tự làm, bạn không nên nhìn code của các bạn khác đã đăng nhé;))

    [​IMG]

    My Facebook: https://www.facebook.com/tiasangmoi

    Bài viết đăng lên diễn đàn khác vui lòng ghi rõ nguồn: Android.Vn
    inner class, inner trong java, inner class trong java, class nội trong java, nested class, các lớp lồng nhau, các class lồng nhau, khóa học java, khóa học java giá rẻ, học java online
    nguyenthanhTuyen, Quagn1998, xuxu932 others thích bài này.
  2. siriusnguyen

    siriusnguyen New Member

    cái này áp dụng trong trường hợp nào hả bạn?
  3. KIetHoHoai

    KIetHoHoai New Member

    Phá phách vậy.
    Show Spoiler

    PHP:
    package Structure;
     
    public class 
    InnerB {
        public static 
    void main(String args []){
            
    Beach a = new Beach();
            
    a.color "Green";
            
    a.place "Vinh Thanh City";
           
            
    Beach.Green b = new Beach().new Green();
            
    b.setNameAge("Ho Hoai Kiet"20);
            
    b.showNameAge();
        }
    //Method Main.
    }// Class InnerB
     
    class Beach {
        public 
    String color "Red"place "Hue City";
       
        class 
    Green {
            private 
    String name;
            private 
    int age;
           
            public 
    void setNameAge(String nameint age){
                
    this.name name;
                
    this.age age;
            }
    //Method setnNameAge.
           
            
    public String getName(){
                return 
    name;
            }
    //Method getName.
           
            
    public int getAge(){
                return 
    age;
            }
    //Method getAge.
     
            
    public void showNameAge(){
                
    System.out.println("Name: "+getName()+" Age: "+getAge() );
                
    System.out.println("Place: "+place +" Color: "+color);
            }
        }
    //Class Greee.
    }//Class Beach.
    Tiasangmoi92 thích bài này.
  4. hanhnv87

    hanhnv87 New Member

    Post một bài cho vui, hihi: :D
    Show Spoiler

    PHP:
    package com.hanhnv.bai20;
     
    public class 
    Bai20 {
        public static 
    void main(String[] args){
           
            
    CMCTelecom cmc = new CMCTelecom();
            
    CMCTelecom.Bkav bkav cmc.new Bkav();
           
            
    cmc.cmcName "Công ty cổ phần Hạ tầng Viễn Thông CMC - CMC Telecom.";
            
    cmc.cmcAddress "Tầng 15, tòa nhà CMC, Duy Tân, Cầu Giấy, Hà Nội.";
            
    cmc.cmcField "Cung cấp dịch vụ internet cáp quang tốc độ cao.";
            
    cmc.cmcWebsite "http://www.cmctelecom.vn";
            
    cmc.cmcStaff 500;
           
            
    bkav.bkavName "Tập đoàn Bkav - Bkav Coporation.";
            
    bkav.bkavAddress "Tòa nhà Bkav – Khu đô thị Yên Hòa – Cầu Giấy – Hà Nội.";
            
    bkav.bkavField "Hoạt động trong lĩnh vực an ninh mạng.";
            
    bkav.bkavWebsite "http://www.bkav.com.vn";
            
    bkav.bkavStaff 900;
           
            
    bkav.showDetails();
        }
    }
     
     
    class 
    CMCTelecom{
        public 
    String cmcName;
        public 
    String cmcAddress;
        public 
    String cmcField;
        public 
    String cmcWebsite;
        public 
    int cmcStaff;
       
        class 
    Bkav{
            public 
    String bkavName;
            public 
    String bkavAddress;
            public 
    String bkavWebsite;
            public 
    String bkavField;
            public 
    int bkavStaff;
           
            public 
    void showDetails(){
                
    System.out.println("Một vài thông tin về CMC Telecom:\n Tên giao dịch: "+cmcName+"\n Địa chỉ: "+cmcAddress+"\n Website: "+cmcWebsite+"\n Lĩnh vực hoạt động: "+cmcField+"\n Số lượng nhân viên: "+cmcStaff);
                
    System.out.println("\n");
                
    System.out.println("Một vài thông tin về Bkav Coporation:\n Tên giao dịch: "+bkavName+"\n Địa chỉ: "+bkavAddress+"\n Website: "+bkavWebsite+"\n Lĩnh vực hoạt động: "+bkavField+"\n Số lượng nhân viên: "+bkavStaff);
            }
            }
        }
  5. thanhpl

    thanhpl New Member

    Show Spoiler
    PHP:
    public class Inner {
        public static 
    void main(String[] args) {
            
    AA a = new AA();
            
    AA.B b a.new B();
         
            
    AA.B c = new AA().new B();
            
    c.show();
            
    b.show();
        }
    }
     
    class 
    AA {
        private 
    int x 8;
        class 
    {
            public 
    void show(){
                
    System.out.println("x = :" x);
            }
        }
    }
  6. TaHuy

    TaHuy New Member

    Tại sao khi mình thay đổi dòng ThoiGian.Time time = tg.new Time(); thành như thế này ThoiGian.Time time = new ThoiGian.new Time();thì lúc mình Run as thì nó hiện kết quả ra ngày tháng năm là 0 / 0 / 0.
    tuanleedragon thích bài này.
  7. nguyentrong

    nguyentrong New Member

    Show Spoiler

    Mã:
    class ThoiGian{
        public int ngay, thang, nam;
       
        class Time{
            public int gio, phut, giay;
           
            public void showTime() {
                System.out.println("Ngay "+ ngay+"/"+thang+"/"+nam);
                System.out.println("Time: "+this.gio+":"+this.phut+":"+this.giay);
            }
        }
    }
     
     
     
    public class hellojava {
       
       
        public static void main(String [] args){
            ThoiGian thoigian = new ThoiGian();
            ThoiGian.Time time = thoigian.new Time();
            thoigian.ngay = 20;
            thoigian.thang = 7;
            thoigian.nam = 1997;
            time.giay = 01;
            time.phut = 02;
            time.gio = 20;
            time.showTime();
        }
       
    }
  8. Blackman

    Blackman New Member

    THeo mình thì do nếu bạn khai như vậy thì đã là new object nên tham chiếu của n1o sẽ được tạo giá trị mặc định trên heap, trogn khi giá trị sau đó trogn code là mình gán vào object tm, nên hai giá trị sẽ khác nhau .
  9. zquangu112z

    zquangu112z Cuộc sống là không chờ đợi!

    Cho mình hỏi hoặc xin link về cách dùng biến this. được không ạ?
    Lí do tại sao lệnh println() thứ 2 lại dùng biến this?
    NHATTA thích bài này.
  10. NHATTA

    NHATTA Member

    Biến this thực chất là con trỏ ngầm trong lập trình.Bạn có thể search rất nhiều tài liệu nói về nó^^
    zquangu112z thích bài này.
  11. cho e hoi ve phuong thuc equals trong java.ham nay la so sanh cai gi,
  12. nguyenthanhTuyen

    nguyenthanhTuyen New Member

    bạn thiếu () sau tThoiGian, phải là ThoiGian.Time time = new ThoiGian().new Time();
  13. luugioi9x

    luugioi9x New Member

    TUYỂN DỤNG LẬP TRÌNH VIÊN JAVA (ĐI LÀM NGAY) TẠI VIETTEL
    Tuyển Gấp Lập Trình Viên Java Đi Làm Ngay
    ➦ Không cần bằng cấp
    ✪Yêu Cầu✪
    ★ Tốt nghiệp trung học phổ thông
    ★ Sáng tạo, nhiệt tình, tinh thần trách nhiệm cao
    ★ Có kinh nghiệm trong các lĩnh vực sau :
    ✔ Code java strust
    ✔ Strust Framework
    ✔ Hibevnate Framework
    ✔ My SQL, Oracle
    ✪ Mức Lương, Thưởng ✪
    Lươngthử việc: 6 triệu/tháng. (2 tháng.)
    Lương chính thức: 8 triệu/ tháng.
    Với những người có kinh nghiệm lâu năm thì mức lương sẽ đàm phán.
    Thỏa thuận theo mong muốn của ứng viên.
    Thưởng: Kết thúc dự án sẽ thưởng từ 1 – 2 tháng lương dựa trên tiến độ dự án và khả năng làm việc của bản thân
    ✪ Chế độ làm việc✪
    ★ Thời gian làm việc: 8 giờ/ngày
    ★ Hưởng lương cứng hàng tháng, 13 tháng lương/năm
    ★ Hưởng các chế độ phúc lợi xã hội (Bảo hiểm XH, Y tế, Thất nghiệp, nghỉ lễ, nghỉ mát)
    ★ Làm việc tại Hà Nội
    CV gửi về: vedavietnam@gmail.com
    Liên hệ trực tiếp : 0943 549 615 (P.200, tầng 2, Số 1 Hoàng Đạo Thúy – Thanh Xuân, Hà Nội)
    Chi phí tuyển dụng: Trả bằng tháng lương đầu tiên cho học viện Veda.
    ✪Yêu cầu hồ sơ✪
    Hồ sơ dự tuyển gồm:
    Đơn đăng ký dự tuyển viết tay.
    CV ghi rõ năng lực chuyên môn và kinh nghiệm
    (Lưu ý: ghi rõ tên đề tài tốt nghiệp, tên các dự án đã tham gia và kết quả đạt được trong CV)
    Sơ yếu lý lịch cá nhân có xác nhận địa phương;
    Photo bằng cấp (có công chứng) và các chứng chỉ chuyên môn đạt được;
    Giấy chứng nhận sức khỏe và giấy khai sinh;
    04 ảnh 4×6 mới chụp không quá 03 tháng.
    Hình thức/Địa điểm/Thời gian nhận hồ sơ
    Ứng viên có thể nộp hồ sơ bằng một trong hai hình thức sau:
    * Nộp hồ sơ trực tuyến: Email đến địa chỉ: vedavietnam@gmail.com
    * Nộp hồ sơ trực tiếp: P.200. tầng 2, Số 1, Hoàng Đạo Thuý, Thanh Xuân, Hà Nội. Sở thông tin & truyền thông Hà Nội
    * Hotline: 0943 549 615
    * Thời hạn nộp hồ sơ: 17/7/2015 tới 31/7/2015.
    Lưu ý:
    ★ Hồ sơ ghi rõ: Vị trí tuyển dụng, địa chỉ, số điện thoại liên hệ.
    ★ Chỉ gọi phỏng vấn các ứng viên đạt yêu cầu. Hồ sơ đã nộp không hoàn trả lại
  14. toiyeuvietnam

    toiyeuvietnam New Member

Chia sẻ trang này