ผมอยากรู้ว่าสมมุติเราใช้ 1Class ทำการ encapsulation
ไว้แล้วใช้อีกคลาสเรียก
Get set เรียบร้อยสามารถใช้งานได้ปกติ
แล้วที่นี้เราจะทำการ inheritance จากคลาสที่เรียกได้ยังไงครับผมไม่เข้าใจเช่น
Code (Java)
public class Data {
private String name;
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
}
public class Setinfo{
public void Showmessage()
{
Scanner sc = new Scanner(System.in);
Data d= new Data();
System.out.print("ชื่อ : ");
d.setName(sc.next());
}
}
เมื่อทำการ Setinfo เรียบร้อยแล้วที่นี้เราก็จะสามารถใช้ field จาก data คือ name โดยเรียก getName มาใช้
ที่นี้ผมลองใช้การ inheritance ต่อดูอีกหน่อย
เป็น
Code (Java)
public class Info extends Setinfo{
public void Result()
{
Data d = new Data();
Showmessage();
System.out.print("ชื่อ : "+d.getName());
}
}
ปรากกฏว่ามันขึ้นว่า Null อะครับ - - เหมือนไม่มีค่า พอลองไปใส่ใน Class Setinfo สามารถแสดงได้อย่างปกติ
ผมเลยไม่เข้าใจว่าจะทำการ inheritance ยังไงให้ใช้ร่วมกับ encapsulation ได้อะครับ
Class main ผมเป็นงี้นะ
Code (Java)
public class Homework {
public static void main(String[] args) {
Info x = new Info();
x.Result();
}
}
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// เรียก Showmessage() โดยตรงจากคลาส Setinfo
Setinfo si = new Setinfo();
si.Showmessage();
// เรียก Showmessage() ผ่านเมธอด Result()
// ของคลาสลูกของคลาส Setinfo ซึ่งก็คือคลาส Info
Info x = new Info();
x.Result();
}
}
class Info extends Setinfo{
public void Result()
{
Info inf = new Info();
inf.Showmessage();
//System.out.print("ชื่อ : "+d.getName());
}
}
class Data {
private String name;
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
}
class Setinfo{
public void Showmessage()
{
Scanner sc = new Scanner(System.in);
Data d= new Data();
System.out.print("ชื่อ : ");
d.setName(sc.next());
System.out.println("ยินดีต้อนรับ คุณ " + d.getName());
}
}