ขาย id boomz โครงการ2 เลเวล48 ราคา 1800 บาท /
วันอาทิตย์ที่ 7 พฤษภาคม พ.ศ. 2560
วันเสาร์ที่ 6 พฤษภาคม พ.ศ. 2560
ขาย id hon
ขาย id hon mmr1800 มีฮีโร่ทุกตัว อาวต้า 364 ตัว ราคา 3500 บาท เอกสารครบ
สนใจติดต่อ หรือข้อมูลเพิ่มเติม ที่0636216511 หรือLine ID : 0897100927
id เจ้าของเพทเอง
id เจ้าของเพทเอง
วันเสาร์ที่ 16 มกราคม พ.ศ. 2559
วันอาทิตย์ที่ 10 มกราคม พ.ศ. 2559
วันพฤหัสบดีที่ 12 พฤศจิกายน พ.ศ. 2558
วันอังคารที่ 10 พฤศจิกายน พ.ศ. 2558
Polymorphism
Polymorphism
โพลิมอร์ฟิซึม (Polymorphism)
ประโยชน์ สำคัญของกลไกลโพลิมอร์ฟิซึม คือการนำกลับมาใช้ใหม่ (reuse)
โปรแกรมที่เราออกแบบไว้ ในปัจจุบันสามารถรองรับคลาสใหม่ๆได้
ที่จะถูกเขียนเพิ่มในอานาคต ได้ ทั้งนี้เพราะวัตถุในคลาสใหม่ๆ
จะถูกใช้งานผ่านทางเรพเฟอร์เรนซ์ของคลาสพื้นฐาน
ส.นอน () สามารถตีความหมายได้หลายแบบ
ขึ้นกับวัตถุที่ ส อ้างถึง
โปรแกรม แสดง
เมธอด นอน ()
สัตว์ ส
;
ส = new สัตว์ ();
ส.นอน();
ส = new ลิง ();
ส.นอน();
ส = new ปลา ();
ส.นอน();
สอนโปรแกรมข้างบน คำสั่ง
ส.นอน() แบบเดียวนั้นทำงานที่เมธอดที่แตกต่างกัน
คุณสมบัตินี้เป็นคุณสมบัติของภาษาโปรแกรมเชิงวัตถุที่มีชื่อว่า โพลิมอร์ฟิซึม (Polymorphism) ซึ้งโพลิมอร์ฟิซึม
จะสนับสนุนการ การนำกลับมาใช้ใหม่ (eruse)
เช่น
ถ้าเราได้เขียนโปรแกรมที่ให้อาหารสัตว์ โปรแกรมของเราย่อยใช้ได้กับแมว ปลา และลิง
และถ้ามีคน สร้างคลาสอีกัวน่าขึ้นมาใหม่
โปรแกรมที่เราขียนก็สามารถใช้ได้กับคลาส อีกัวน่าได้เช่นกัน โดยมีข้อแม้ว่า แต่คลาสอีกัวน่า จะต้องสืบทอดคลาสสัตว์ หรือ
คลาสที่เป็นลูกของควาสสัตว์
Class คนเลี้ยงสัตว์
ให้อาหาร (สัตว์ ) {
ส.กิน();
}
}
|
คนเลี้ยงสัตว์
ค = new คนเลี้ยงสัตว์();
ลิง ล = new ลิง();
อีกัวน่า อ = new อีกัวน่า();
ค.
ให้อาหาร(ล) ;
ค.ให้อาหาร
(อ) ;
|
ภาพ การสืบทอดคลาสสัตว์ที่เป็นคลาสลูก
ตัวอย่าง ที่1
1 1. คลาสภาพร่างเขียนไว้
Public class Shape{
Public double getArea(){rrturn 0 ;}
}
นอกจากนี้แล้วภาพร่างยังมีสีตามที่ประกาศไว้ใน อีนัม color
public class
Shape{
private
Color color;
public Shape(){
Color
= Color.Red;
}
public void
setColor(Color c) {
Color
= c ;
}
public
Color getColor(){
Return
color;
}
public double getColorArea(){
Return
0 ;
}
}
1 2. ทดสอบคลาสภาพร่าง
คลาส TestShape
ใช้ทดสอบการทำงานของคลาส Shape
โดยจะเรียกใช้ทุกเมธอด ในคลาส Shape ในการทดสอบมีขั้นตอนคือ
1.1
สร้างภาพร่าง
พิมพ์สี และพิมพ์พื้นที่
1.2
สร้างภาพร่างอีกภาพ เปลี่ยนเป็นสีน้ำเงิน พิมพ์สี
และพิมพ์พื้นที่
public class TestShape
public static void
main (String[]args){
Shape s1
= new
Shape {
System.out.println(s1.getColor());
System.out.println(s1.getArea());
Shape s2 =
new Shape();
S2.setColor(Color.Blue);
System.out.println(s2.getColor());
System.out.println(s2.getArea());
}
}
ผลการรันโปรแกรมคือ
Red
0.0
Blue
0.0
ตัวอย่าง 2 TestEmployee.java
package ems.test;
import ems.model.Employee;
import ems.model.Manager;
public class TestEmployee {
public static void main(String[] args) {
Employee[] empList = new Employee[10];
Employee emp1 = new Employee();
emp1.setId(1);
emp1.setName("James");
emp1.setSalary(15000);
emp1.getAddress().setStreet("Rama
3");
emp1.getAddress().setCity("Bangkok");
empList[0] = emp1;
Employee emp2 = new Employee();
emp2.setId(2);
emp2.setName("Ann");
emp2.setSalary(25000);
emp2.getAddress().setStreet("Silom");
emp2.getAddress().setCity("Bangkok");
empList[1] = emp2;
Manager emp3 = new Manager();
emp3.setId(3);
emp3.setName("Peter");
emp3.setSalary(40000);
emp3.getAddress().setStreet("Bangrak");
emp3.getAddress().setCity("Bangkok");
emp3.setParkingNo("4C-19");
empList[2] = emp3;
// because empList will hold address of Employee
// And Manager is-an Employee. Therefore it's fine
for (int i = 0;
i < empList.length; i++) {
if (empList[i] != null) {
System.out.println(empList[i].getDetails());
} else {
break;
}
}
} // end of main()
} // end class
ผลการรันโปรแกรมได้ดังนี้
1,
James, 15000.0, Rama 3, Bangkok
2,
Ann, 25000.0, Silom, Bangkok
3,
Peter, 40000.0, Bangrak, Bangkok, [Parking No: 4C-19]
ตัวอย่างที่3
class Overload
{
void demo (int a)
{
System.out.println ("a: " + a);
}
void demo (int a,
int b)
{
System.out.println ("a and b: " + a + "," + b);
}
double demo(double
a) {
System.out.println("double a: " + a);
return a*a;
}
}
class MethodOverloading
{
public static void
main (String args [])
{
Overload Obj =
new Overload();
double result;
Obj .demo(10);
Obj .demo(10,
20);
result = Obj
.demo(5.5);
System.out.println("O/P : " + result);
}
}
ผลการรันโปรแกรมที่ได้ คือ
a: 10
a and b: 10,20
double a: 5.5
O/P : 30.25
ตัวอย่างที่ 4
public class BaseClass
{
public void
methodToOverride() //Base class method
{
System.out.println ("I'm the method of BaseClass");
}
}
public class DerivedClass extends BaseClass
{
public void
methodToOverride() //Derived Class method
{
System.out.println ("I'm the method of DerivedClass");
}
}
public class TestMethod
{
public static
void main (String args []) {
// BaseClass
reference and object
BaseClass obj1
= new BaseClass();
// BaseClass
reference but DerivedClass object
BaseClass obj2
= new DerivedClass();
// Calls the
method from BaseClass class
obj1.methodToOverride();
//Calls the
method from DerivedClass class
obj2.methodToOverride();
}
}
ผลการรันโปรแกรทที่ได้ คือ
.
I'm the method of BaseClass
I'm the method of DerivedClass
ตัวอย่างที่5
class Vehicle {
public void move
() {
System.out.println ("Vehicles are used for moving from one place to
another ");
}
}
class Car extends Vehicle {
public void move
() {
super. move ();
// invokes the super class method
System.out.println ("Car is a good medium of transport ");
}
}
public class TestCar {
public static void
main (String args []){
Vehicle b =
new Car (); // Vehicle reference but Car object
b.move ();
//Calls the method in Car class
}
}
ผลการรันโปรแกรทที่ได้ คือ
Vehicles are used for moving from one place to another
Car is a good medium of transport
inheritance
inheritance
การสืบทอด(inheritance) ในโปรแกรมเชิงวัตถุเป็นเเนวความคิดที่เรียนเเบบจากการสืบทอดลักษณะ ของลูกจากพ่อเเม่ ภาษาโปรแกรม ภาษาโปรแกรมเชิงวัตถุนำการสืบทอด มาใช้กับคลาสและอินเทอร์เฟช
ในการเขียนโปรแกรมภาษา Java นั้นเราไม่จำเป็นต้องสร้างคลาสขึ้นมาใหม่เองทั้งหมด แต่เราสามารถใช้คลาสที่มีคนสร้างไว้ หรือที่เราเคยสร้างไว้อยู่แล้วมาใช้ให้เป็นประโยชน์ได้
กลไลการสืบทอด
กลไกลการสืบทอด ช่วยแก้ไขปัญหาการเขียนโปรแกรม ซ้ำซ้อนกันได้ เมธอดหรือ แอตทริบิวต์ที่คลาสต่างๆ มีร่วมกันอยู่จะถูกนำไปใส่คลาสเเม่ คลาสลูกจะสืบทอดเมธอด เเละแอตทริบิวต์แม่โดยอัตโนมัติ การเเก้ไขการเปลี่ยนแปลงเมธอดในคลาสเเม่จะทำให้คลาสลูกเปลี่ยนตามไปด้วย เเมว ปลา เเละ ลิง ล้วนเป็นสัตว์ สัตว์ทุกตัวสามารถ กินเเละนอนได้ เราจึงนำแอตทริบิวต์เเละเมธอดที่สัตว์ต่างๆมีร่วมกัน ไปใส่ในคลาสสัตว์ คลาสสัตว์เขียนเป็น ภาษาไทยปนภาษา จาวา ได้ดังนี้
class สัตว์ {
// แอตทริบิวต์
อายุ ;
ความหิว ;
// เมธอด
กิน() {...}
นอน() {...}
หลังจากนั้น เราจะสามารถทำการเชื่มต่อคลาส เเมว ปลาเเละลิงกับคลาสสัตว์ โดยอาศัยกลไกลของการสืบทอด การสืบทอดในภาษาไทยปนภาษา จาวา ใช้คำว่า extends (ภาษา จาวา ก็ใช้extends เหมือนกัน ) การสืบทอดมีภาพเเบบดังนี้
ภาพเเบบ
class คลาสลูก extends คลาสเเม่
ตัวอย่างเช่น
class เเมว extends สัตว์ {
}
classปลา extends สัตว์ {
}
classลิง extends สัตว์{
}
เรื่องเกี่ยวกับการ Inheritance
เรื่องเกี่ยวกับการ Inheritance จะมีส่วนประกอบหลายส่วนประกอบกันที่คุณต้องทำความรู้จักดังนี้
- SuperClass เป็นคลาสที่เป็นต้นแบบให้คลาสอื่นสืบทอดคุณสมบัติ
- SubClass เป็นคลาสที่สืบทอดคุณสมบัติจากคลาสอื่น
- FinalClass คลาสที่ไม่ยอมให้คลาสอื่นสืบทอดคุณสมบัติ
- Override method การปรับเปลี่ยนคุณสมบัติของเมธอดในคลาสลูกให้ต่างจากคลาสแม่
SuperClass และ SubClass
- SuperClass เรียกง่ายๆ ว่า คลาสแม่ เป็นคลาสที่เป็นต้นแบบให้คลาสอื่นสืบทอดคุณลักษณะ เช่นคลาส Animal เป็น SuperClass ของคลาส Lion, คลาส elephant, คลาส Tiger, คลาส Dog และคลาส Cat
- SubClass เรียกง่ายๆ ว่า คลาสลูก เป็นคลาสที่สืบทอดคุณลักษณะ (ทั้งแอตทริบิวต์ และเมธอด)
ตัวอย่างสืบทอดไปสู่ SubClass ได้บ้าง
ตัวอย่าง 1
pulic class inheritUsing{
public static void main (String[]args){
Father ada = nwe Father();
String strIn = dad.ShowFather();
System.out.println(strIn);
son child =new Son();
strIn = child.ShowSon();
System.out.println(strIn);
strIn = child.ShowFather();
System.out.println(strIn);
}
}
class Father{
private int f1;
String ShowFather()
{
f1=(int) (Math.random()*10)+30;
return "class Father : age =" + f1;
}
}
class Son extends Father
private int s1;
String ShowSon()
{
s1 = (int)(Math.random()*10);
return "class Son : age =" +s1;
}
}
Override method
เป็นการแก้ไขเมธอดที่สืบทอดมาจากคลาสแม่ ซึ่งการ Override เมธอดในคลาสแม่นั้น คลาสลูกจะต้องมีชื่อของเมธอด ,ค่าส่งกลับออกจากเมธอด และค่าอาร์กิวเมนต์เหมือนคลาสแม่ แต่จะปรับปรุงการทำงานภายในที่ไม่เหมือนกับคลาสแม่
ตัวออย่าง 2
Public class
InheritOverride{
public static
void main(String[]args){
Parent dadmom = new Parent();
System.out.println(dadmom.Show());
Child
kid = new Child();
System.out.println(kid.Show
());
}
}
Class Parent {
Private
int px;
String Show(){
Px
= (int)(Math.random()*100);
Return “px = ”+ px;
}
}
Class Child extends Parent {
Private
int cx;
String Show() {
Cx
= (int)(Math.random()*100)-200;
Return
“cx = ” + cx;
}
}
FinalClass
คลาสที่ใช้คีย์เวิร์ด final กับตัวคลาส ทำให้เป็นคลาสที่ไม่สามารถืบทอดคุณสมบัติได้ แต่หากกำหนด คีย์เวิร์ด final ให้กับเพียงแค่บางเมธอดภายในคลาสที่เป็นแม่แล้ว จะทำให้คลาสลูกที่สืบทอดจากไม่สามารถแก้ไขข้อมูลต่างๆ ภายในเมธอดที่สืบทอดจากคลาสแม่ได้ (แต่คลาสแม่ยังสืบทอดต่อไปได้)
ตัวอย่าง 3
Final class Dinosaur
{
public int Weinght = 5000l;
String Show () {
Return
“I am Dinosaur. Wiegt =” + “kg”;
}
}
Class Reptile {
public int
Weight = 30;
final String
ShowReptile(){
return
“I am
reptile. Weight = ”+ Weight + “ kg ”;
}
}
ตัวอย่างที่ 4
class Calculation{
int z;
public void
addition(int x, int y){
z=x+y;
System.out.println("The sum of the given numbers:"+z);
}
public void
Substraction(int x,int y){
z=x-y;
System.out.println("The difference between the given
numbers:"+z);
}
}
public class My_Calculation extends Calculation{
public void
multiplication(int x, int y){
z=x*y;
System.out.println("The product of the given numbers:"+z);
}
public static void
main(String args[]){
int a=20, b=10;
My_Calculation
demo = new My_Calculation();
demo.addition(a,
b);
demo.Substraction(a, b);
demo.multiplication(a, b);
}
}
Compile and execute the above code as shown below
javac My_Calculation.java
java My_Calculation
After executing the program it will produce the following
result.
The sum of the given numbers:30
The difference between the given numbers:10
The product of the given numbers:200
สมัครสมาชิก:
บทความ (Atom)
-
Polymorphism โพลิมอร์ฟิซึม (Polymorphism) ประโยชน์ สำคัญของกลไกลโพลิมอร์ฟิซึม คือการนำกลับมาใช้ใหม่ ( reuse ) โปรแ...













