ما هو الميراث (يمتد)؟
الميراث هو: الفئة المحددة حديثًا هي ظاهرة للحصول على سمات وطرق من الفئات الموجودة. تسمى هذه الفئة الحالية فئة الأصل ، ويسمى الفئة التي تحصل على خصائص وطرق من هذه الفئة الأصل فئة فرعية.
EndendsDemo1.Java
نسخة الكود كما يلي:
/*ما هو الميراث*/
الطبقة العامة تمتد منديميو 1 {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
Truck T = New Truck () ؛
T.size = 100 ؛ من الأفضل استخدام المُنشئين لتهيئة متغيرات الأعضاء ، أو توفير واجهات Set () والحصول على ().
// ترث مثيل فئة الشاحنة الحجم واللون من فئة السيارة.
// أي شاحنة لديها صندوق شحن واحد أكثر من السيارة
}
}
Class Car {// Car
حجم الجسم
لون السلسلة
}
شاحنة الفئة تمدد السيارة {// Truck
صندوق التعبئة
}
فوائد الميراث
1. تحسين قابلية إعادة استخدام الكود
2. دع العلاقة بين الفصول تخلق حالة تعدد الأشكال.
تنسيق الموروث (يمتد)
نسخة الكود كما يلي:
فئة الفئة الفرعية فئة تمتد الفئة الفائقة {
// تنفيذ البيان ؛
}
الكلمات الرئيسية الفائقة
1. استخدام الكلمة الرئيسية الفائقة هو نفسه
2. هذا يمثل مرجع هذه الفئة ، ويمثل Super مرجع الفئة الأصل
3. عندما يظهر عضو في نفس الاسم في الفئة الفرعية والفئة الأم ، يمكنك استخدام Super وهذا لتمييزه.
superdemo.java
نسخة الكود كما يلي:
/* استخدام سوبر
* نتيجة الإخراج:
* super.i = 10 ، this.i = 20
*/
الفئة العامة superdemo {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
فئة فرعية جديدة (). ShowMessage () ؛
}
}
فئة الفئة الفائقة {
int i = 10 ؛
}
فئة الفئة الفرعية فئة تمتد الفئة الفائقة {
int i = 20 ؛
public void showmessage () {
system.out.printf ("super.i = ٪ d ، this.i = ٪ d/n" ، super.i ، this.i) ؛
}
}
طرق التجاوز الموروثة من فئة الوالدين (تجاوز)
1. عندما تظهر طريقة تمامًا مثل الفئة الأصل في الفئة الفرعية (قيمة الإرجاع ، اسم الوظيفة ، المعلمات الرسمية) ، ستحدث عملية تجاوز.
overriddemo1.java
نسخة الكود كما يلي:
/* كيفية تجاوز الطريقة الموروثة من فئة الأصل (تجاوز)
* نتيجة الإخراج:
* الفئة الفائقة: أنا جيد ~
* الفئة الفرعية: أنا ممتاز ~~~
*/
الطبقة العامة overriddemo1 {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
الفئة الفرعية SC = فئة فرعية جديدة () ؛
sc.speak () ؛
}
}
فئة الفئة الفائقة {
الفراغ العام التحدث () {
System.out.println ("Superclass: أنا جيد ~") ؛
}
}
فئة الفئة الفرعية فئة تمتد الفئة الفائقة {
Override //@roved تعني أن الطريقة التالية سيكون لها عملية إعادة كتابة. زيادة أمن الكود إلى حد ما
والمتانة
الفراغ العام التحدث () {
super.speak () ؛
System.out.println ("الفئة الفرعية: أنا ممتاز ~~~") ؛
}
}
2. عند تجاوز طريقة الفئة الأصل ، لا تسمح فئة الطفل بالأساليب بنفس الاسم والمعلمات مثل فئة الأصل ولكن مع أنواع الإرجاع المختلفة.
overriddemo2.java
نسخة الكود كما يلي:
/* الأساليب مع نفس الاسم والمعلمات مثل فئة الأصل ولكن مع أنواع الإرجاع المختلفة غير مسموح بها في الفئات الفرعية.
* رسالة الخطأ:
* overriddemo.java:20: خطأ: F () في الفئة الفرعية لا يمكن تجاوز f () في فئة فائقة
* public int f () {
* ^
* نوع الإرجاع INT غير متوافق مع الفراغ
* overriddemo.java:19: خطأ: الطريقة لا تتجاوز أو تنفيذ طريقة من نوع supertype
* Override
* ^
* 2 أخطاء
*/
الطبقة العامة overriddemo2 {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
}
}
فئة الفئة الفائقة {
الفراغ العام f () {
}
}
فئة الفئة الفرعية فئة تمتد الفئة الفائقة {
@تجاوز
العام int f () {
العودة 1 ؛
}
}
3. يجب أن يكون إذن الوصول إلى طريقة الفئة الفرعية أن فئة الأصل يجب أن تكون أكبر من أو تساوي طريقة إعادة الكتابة في الفئة الأصل.
overriddemo3.java
نسخة الكود كما يلي:
/* يجب أن يكون إذن الوصول من طريقة الفئة الفرعية يتجاوز الفئة الأصل أكبر من أو مساوٍ لإذن الوصول من طريقة الفئة الأصل
* رسالة الخطأ:
* overriddemo.java:18: خطأ: F () في الفئة الفرعية لا يمكن تجاوز F () في فئة فائقة
* void foid f () {
* ^
* محاولة تعيين امتيازات الوصول الأضعف
* 1 خطأ
*/
الطبقة العامة overriddemo3 {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
}
}
فئة الفئة الفائقة {
الفراغ العام f () {
}
}
فئة الفئة الفرعية فئة تمتد الفئة الفائقة {
@تجاوز
void foid f () {// قم بتغيير إذن الوصول هنا إلى الأماكن العامة
}
}
وحدة تحكم الوصول
أحرف التحكم في الوصول هي: عامة ، محمية ، افتراضية ، خاصة
يتطلب البعض معرفة قليلة بالحزم ، لذلك سأتحدث عن ذلك عندما أتحدث عن الحزم.