Latest web development tutorials
×

Java หลักสูตร

Java หลักสูตร Java แนะนำโดยย่อ Java การกำหนดค่าการพัฒนาสภาพแวดล้อม Java พื้นฐานไวยากรณ์ Java วัตถุและการเรียน Java ชนิดข้อมูลพื้นฐาน Java ประเภทตัวแปร Java การปรับเปลี่ยน Java ผู้ประกอบการ Java โครงสร้างห่วง Java สาขาโครงสร้าง Java Number หมวดหมู่ Java Character หมวดหมู่ Java String หมวดหมู่ Java StringBuffer Java แถว Java วันที่เวลา Java นิพจน์ปกติ Java ทาง Java Stream,File,IO Java Scanner หมวดหมู่ Java การจัดการข้อยกเว้น

Java เชิงวัตถุ

Java สืบทอด Java Override/Overload Java polymorphism Java ระดับนามธรรม Java บรรจุภัณฑ์ Java อินเตอร์เฟซ Java บรรจุภัณฑ์

Java การสอนที่ทันสมัย

Java โครงสร้างข้อมูล Java คอลเลกชันกรอบ Java ยาชื่อสามัญ Java การทำให้เป็นอันดับ Java เขียนโปรแกรมเครือข่าย Java ส่ง Email Java การเขียนโปรแกรมแบบมัลติเธรด Java Appletรากฐาน Java เอกสารความคิดเห็น Java ตัวอย่าง Java 8 คุณสมบัติใหม่ Java MySQL สัมพันธ์

เขียน Java (ทับ) และการบรรทุกเกินพิกัด (Overload)

Rewrite (แทนที่)

เขียนใหม่เป็น subclass ของขั้นตอนการดำเนินการเพื่อให้สามารถเข้าถึงวิธีการเรียนผู้ปกครองอีกครั้งเขียน! ค่าที่ส่งคืนและพารามิเตอร์จะไม่เปลี่ยนแปลง ว่าเป็นกรณีเดียวกันแกนเขียน!

เขียนใหม่ประโยชน์จาก subclasses ตามต้องการกำหนดเฉพาะเจาะจงในการกระทำของพวกเขา

นั่นคือ subclass ของวิธีการเรียนผู้ปกครองสามารถรับรู้ได้ตามความจำเป็น

ในหลักการเชิงวัตถุเขียนใหม่หมายความว่าคุณสามารถแทนที่วิธีการที่มีอยู่ ตัวอย่างมีดังนี้

class Animal{

   public void move(){
      System.out.println("动物可以移动");
   }
}

class Dog extends Animal{

   public void move(){
      System.out.println("狗可以跑和走");
   }
}

public class TestDog{

   public static void main(String args[]){
      Animal a = new Animal(); // Animal 对象
      Animal b = new Dog(); // Dog 对象

      a.move();// 执行 Animal 类的方法

      b.move();//执行 Dog 类的方法
   }
}

ตัวอย่างข้างต้นรวบรวมผลมีดังนี้

动物可以移动
狗可以跑和走

ในตัวอย่างข้างต้นจะเห็นได้แม้ B เป็นประเภทสัตว์ แต่มันเป็นวิธีการดำเนินการย้ายระดับสุนัข

เพราะนี่คือที่รวบรวมเวลา แต่การตรวจสอบพารามิเตอร์ชนิดอ้างอิง

อย่างไรก็ตามในเวลาเรียกใช้ชนิดของเครื่องเสมือนจาวา (JVM) ของวัตถุที่ระบุและวิธีการดำเนินงานของวัตถุ

ดังนั้นในตัวอย่างข้างต้นคอมไพเลอร์ที่ได้รับสามารถที่จะประสบความสำเร็จเพราะวิธีการย้ายที่มีอยู่ระดับสัตว์ แต่วิ่งวิ่งเป็นวิธีการสำหรับวัตถุโดยเฉพาะอย่างยิ่ง

พิจารณาตัวอย่างต่อไปนี้:

class Animal{

   public void move(){
      System.out.println("动物可以移动");
   }
}

class Dog extends Animal{

   public void move(){
      System.out.println("狗可以跑和走");
   }
   public void bark(){
      System.out.println("狗可以吠叫");
   }
}

public class TestDog{

   public static void main(String args[]){
      Animal a = new Animal(); // Animal 对象
      Animal b = new Dog(); // Dog 对象

      a.move();// 执行 Animal 类的方法
      b.move();//执行 Dog 类的方法
      b.bark();
   }
}

ตัวอย่างข้างต้นรวบรวมผลมีดังนี้

TestDog.java:30: cannot find symbol
symbol  : method bark()
location: class Animal
                b.bark();
                 ^

โปรแกรมจะโยนความผิดพลาดสะสมเพราะไม่มีการอ้างอิงประเภท B วิธีเปลือกสัตว์


วิธีการเขียนกฎ

  • รายการพารามิเตอร์จะต้องตรงเช่นเดียวกับวิธีการที่จะถูกเขียนใหม่;
  • ประเภทกลับต้องถูกเขียนใหม่ทั้งหมดที่มีประเภทการกลับมาของวิธีการเดียวกัน;
  • การเข้าถึงไม่ต่ำกว่าวิธีการเข้าถึงระดับผู้ปกครองแทนที่ ตัวอย่างเช่น: ถ้าระดับผู้ปกครองมีการประกาศที่สาธารณะแล้วแทนที่วิธีนี้ใน subclass ไม่สามารถประกาศเป็นการป้องกัน
  • สมาชิกของชนชั้นปกครองเท่านั้นที่สามารถแทนที่ subclasses ของมัน
  • ประกาศเป็นวิธีสุดท้ายไม่สามารถแทนที่
  • ประกาศเป็นวิธีการคงไม่สามารถเขียนใหม่ แต่สามารถประกาศอีกครั้ง
  • ชั้นผู้ปกครองและ subclass ในแพคเกจเดียวกันประเภทรองสามารถแทนที่ระดับผู้ปกครองของวิธีการทั้งหมดนอกเหนือจากแถลงการณ์ของวิธีการส่วนตัวและครั้งสุดท้าย
  • ซับคลาสและ superclass ไม่ได้เป็นแพคเกจเดียวกันดังนั้นเพียง subclasses สามารถแทนที่การประกาศของวิธีการที่ไม่ใช่สุดท้ายของประชาชนระดับผู้ปกครองและการป้องกันสำหรับ
  • วิธีการแทนที่สามารถโยนยกเว้นใด ๆ ไม่ได้รับคำสั่งโดยไม่คำนึงว่าวิธีการที่ได้รับการเขียนใหม่โยนข้อยกเว้น แต่วิธีการที่ไม่สามารถแทนที่การยกเว้นบังคับโยนใหม่หรือกว้างกว่าการประกาศบังคับเป็นวิธีการแทนที่ข้อยกเว้นมิฉะนั้นคุณจะ
  • คอนสตรัคไม่สามารถเขียนใหม่
  • หากวิธีการที่ไม่สามารถรับมรดกก็ไม่สามารถแทนที่วิธีนี้

การใช้คำหลักที่ซูเปอร์

เมื่อคุณจะต้องมีการเขียนใหม่เพื่อเรียกวิธีการเรียนของผู้ปกครองใน subclass ที่จะใช้คำหลักที่ซุปเปอร์

class Animal{

   public void move(){
      System.out.println("动物可以移动");
   }
}

class Dog extends Animal{

   public void move(){
      super.move(); // 应用super类的方法
      System.out.println("狗可以跑和走");
   }
}

public class TestDog{

   public static void main(String args[]){

      Animal b = new Dog(); // Dog 对象
      b.move(); //执行 Dog类的方法

   }
}

ตัวอย่างข้างต้นรวบรวมผลมีดังนี้

动物可以移动
狗可以跑和走

โอเวอร์โหลด (Overload)

โอเวอร์โหลด (มากไป) อยู่ในระดับภายในวิธีการที่มีชื่อเดียวกัน แต่มีพารามิเตอร์ที่แตกต่างกัน ประเภทผลตอบแทนอาจจะเหมือนหรือต่างกัน

แต่ละวิธีมากเกินไป (หรือคอนสตรัค) จะต้องมีรายการที่ไม่ซ้ำกันของชนิดอาร์กิวเมนต์

ก่อสร้างมากเกินไปเท่านั้น

การบรรทุกเกินพิกัดกฎ

  • วิธีการมากเกินไปต้องเปลี่ยนรายการพารามิเตอร์;
  • วิธีการมากเกินไปสามารถเปลี่ยนประเภทผลตอบแทน;
  • วิธีการมากเกินไปอาจมีการเปลี่ยนแปลงปรับเปลี่ยนการเข้าถึง
  • วิธีการมากเกินไปสามารถประกาศข้อยกเว้นใหม่หรือการตรวจสอบที่กว้างขึ้น;
  • วิธีการที่สามารถจะอยู่ในระดับเดียวกันหรือมากเกินไปในประเภทรอง

ตัวอย่าง

public class Overloading {
 
	public int test(){
		System.out.println("test1");
		return 1;
	}
 
	public void test(int a){
		System.out.println("test2");
	}	
 
	//以下两个参数类型顺序不同
	public String test(int a,String s){
		System.out.println("test3");
		return "returntest3";
	}	
 
	public String test(String s,int a){
		System.out.println("test4");
		return "returntest4";
	}	
 
	public static void main(String[] args){
		Overloading o = new Overloading();
		System.out.println(o.test());
		o.test(1);
		System.out.println(o.test(1,"test3"));
		System.out.println(o.test("test4",1));
	}
}

ความแตกต่างระหว่างการเขียนมากไป

จุดของความแตกต่าง วิธีการมากเกินไป วิธีการเอาชนะ
รายการพารามิเตอร์ คุณต้องได้รับการแก้ไข จะต้องไม่ได้รับการแก้ไข
ประเภทกลับ คุณสามารถปรับเปลี่ยน จะต้องไม่ได้รับการแก้ไข
ผิดปกติ คุณสามารถปรับเปลี่ยน สามารถลดลงได้หรือถูกลบออกคุณจะต้องไม่โยนข้อยกเว้นใหม่หรือที่กว้างขึ้น
ทางเข้า คุณสามารถปรับเปลี่ยน จะต้องไม่เป็นข้อ จำกัด ที่เข้มงวดมากขึ้น (ไม่ จำกัด สามารถลดลง)