Announcement

Collapse
No announcement yet.

hỏi về hướng đối tượng

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Java] hỏi về hướng đối tượng

    Code:
    public class KeThua {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
            A khanh =new B();
            khanh.print();
            //khanh.print(4);
        }
    }
    class A 
    { 
        public void print()
        {
            System.out.println("toi la A" );
        }
        
    }
    class B extends A
    {
        public void print()
        {
            System.out.println("toi la b");
        }
    }
    MÌnh có 1 lớp A kế thừa B với phương 2 bên đều là print()
    khi dùng A khanh = new B();
    thì gọi hàm print() ---> kết quả sẽ là "toi la b"

    Nhưng khi khai báo thêm tham biến vào hàm print ( print(int a) ) ở lớp A thì nó lại báo lỗi.
    mình muốn hỏi tại sao vì lúc đầu mình dùng print() thì nó chạy ở lớp B đâu liên quan gì A.
    AI là người đặt chân đầu tiên là Mặt Trăng ????
    --> Ai cũng sẽ trả lời là Neil Armstrong
    Vậy ai là người thứ 2 ????
    ---> Không ai quan tâm cả
    Bạn phải là người dẫn đầu. Không ai chú ý đến người thứ 2 cả !
    Hãy học bằng cả trái tim, thành công sẽ theo đuổi bạn

  • #2
    Khi chạy chương trình, JVM sẽ gọi hàm thích hợp với đối tượng thực sự được biến "khanh" tham chiếu đến (tức là gọi hàm print của lớp B).
    Tuy nhiên, compiler thì chỉ biết "khanh" là một biến kiểu lớp A, mà lớp A không có hàm print() nào (vì đã đổi thành print(int a)) nên sẽ báo lỗi.
    Last edited by 08520467; 13-02-2012, 18:59.

    Comment


    • #3
      Originally posted by 09520130 View Post
      Nhưng khi khai báo thêm tham biến vào hàm print ( print(int a) ) ở lớp A thì nó lại báo lỗi.
      Lỗi là tất nhiên, vì bây h lớp A đâu có phương thức print(), cho nên gọi khanh.print() ở hàm main thì lỗi thôi.
      Last edited by 08520034; 13-02-2012, 19:33.

      Comment


      • #4
        Hi ba.n,

        Trong trường hợp

        Code:
        public class KeThua {
        
            /**
             * @param args the command line arguments
             */
            public static void main(String[] args) {
                // TODO code application logic here
                A khanh =new B();
                khanh.print();
                //khanh.print(4);
            }
        }
        class A 
        { 
            public void print()
            {
                System.out.println("toi la A" );
            }
            
        }
        class B extends A
        {
            public void print()
            {
                System.out.println("toi la b");
            }
        }
        class B override (???)method print của class A. Và khi khai báo
        Code:
         A khanh =new B();
                khanh.print();
        thi khanh.print() luon goi ham print cua class B (class ma khanh tham chieu toi).

        Trong trường hợp
        Code:
        public class KeThua {
        
            /**
             * @param args the command line arguments
             */
            public static void main(String[] args) {
                // TODO code application logic here
                A khanh =new B();
                khanh.print();
                //khanh.print(4);
            }
        }
        class A 
        { 
            public void print(int a)
            {
                System.out.println(a);
            }
            
        }
        class B extends A
        {
            public void print()
            {
                System.out.println("toi la b");
            }
        }
        method print trong class B trong trường hợp này overload (???)lại method print trong class A.

        Va khi khai báo
        Code:
         A khanh =new B();
                khanh.print();
        thi khanh.print() luôn gọi hàm print của class B (class mà biến khanh tham chiếu tới). Cho nên khi goi ham khanh.print() sẽ bị lỗi khi compile
        http://httt.uit.edu.vn

        Comment

        LHQC

        Collapse
        Working...
        X