01/10/2018, 09:27
Java Core và Java Swing
Mình có 2 câu hỏi:
1> Khi nào sử dụng Jpanel khi nào dùng Jframe ?
2> Khi học về Interface, sách có đoạn code và câu hỏi như sau:
mong các tiền bối đi trước cho mình xin câu trả lợi. Thanks!
Bài liên quan
câu 2. Bản chất nó khá giống với đa hình (Polymophism).Trong trường hợp này cái bạn đang làm là cha new con (Series ob = new ByTows() ). Bạn cứ hiểu thế này cho dễ : trong thời gian compile time (đang viết code), ob chỉ có thể dùng những method của cha, tức là trong ByTows hoặc ByThree mà có các method khác thì ob ko gọi như bình thường được mà phải ép kiểu. Còn trong thời gian runTime (code đang chạy),nó sẽ chạy method của tk con --> trong trường hợp này nó sẽ chạy getNext() của ByTows hay ByThree thay vì tk cha Series.
Vậy tại sao lại cần gán như thế? sao lại không gọi luôn bằng chính đối tượng của thực thể mà phải thông qua Interface nhỉ ?
Tùy thuộc vào từng hoàn cảnh bạn à:
Case 1: Nếu bạn tạo class implement 1 interface và chỉ override lại các phương thức của interface đó, x thì bạn có thể khai báo biến reference kiểu class hoặc interface cũng được.
Case 2: Nếu bạn tạo class implement 1 interface, ngoài override lại các phương thức của interface đó, bạn định nghĩa thêm vài method cho class đó. VD:
Gỉa sử bạn có 2 câu lệnh sau:
Nó sẽ bị lỗi câu lệnh thứ 2 bởi vì interface Bird ko khai báo method swim, khi bạn gọi phương thức từ biến reference, Compiler sẽ không quan tâm tới kiểu Object mà biến reference trỏ tới mà chỉ quan tâm đến kiểu biến reference, ở VD này là Bird. Chính vì vậy, ta phải dùng kiểu class Penguin (là nơi khai báo và định nghĩa method swim())
Kế thừa sinh ra để làm điều đó mà bạn.Sau này sẽ có những bài liên quan đến nhiều Obj thuộc 1 class, cách này sẽ giúp tiết kiệm đc code thay vì gọi bằng chính đối tượng của Obj
Câu 1: Ở đâu có JFrame thì ở đó có JPanel, tưởng tượng JFrame là 1 cái khung tranh và JPanel là 1 bức tranh trong cái khung ấy. Và 1 khung tranh có thể có nhiều bức tranh.