الكلمة الرئيسية الفائقة في Java
The Super
الكلمة الرئيسية في Java هي متغير مرجعي يستخدم للإشارة إلى كائن فئة Parent Direct. كلما قمت بإنشاء مثيل من الفئة الفرعية ، يتم إنشاء مثيل الفئة الأصل ضمنيًا ويتم الإشارة إليه بواسطة متغير مرجع Super .
استخدام الكلمة الرئيسية الفائقة Java
للإشارة إلى متغيرات مثيل فئة الوالدين المباشرة.
Super للوصول إلى عضو البيانات أو حقل الفئة الأصل. إذا كان لدى الوالد والطفل نفس الحقل ، فاستخدمه.
class Animal {
String color = "white";
}
class Dog extends Animal {
String color = "black";
void printColor() {
System.out.println(color); // 打印 Dog 类的颜色
System.out.println(super.color); // 打印 Animal 类的颜色
}
}
class TestSuper1 {
public static void main(String args[]) {
Dog d = new Dog();
d.printColor();
}
}
الإخراج: ]]
أسود أبيضفي المثال أعلاه ، كل من فئات الحيوانات والكلاب لها لون السمة العام. إذا قمنا بطباعة خاصية اللون ، فسيقوم بطباعة لون الفئة الحالية افتراضيًا. للوصول إلى خاصية الأصل ، نحتاج إلى استخدام الكلمة الرئيسية
Super .
لاستدعاء أساليب فئة الأصل.
Super إذا كانت فئة الطفل تحتوي على نفس طريقة فئة الأصل ، فيجب استخدامها. بمعنى آخر ، إذا تم إعادة كتابة الطريقة ، يتم استخدامها.
class Animal {
void eat() {
System.out.println("eating...");
}
}
class Dog extends Animal {
void eat() {
System.out.println("eating bread...");
}
void bark() {
System.out.println("barking...");
}
void work() {
super.eat();
bark();
}
}
class TestSuper2 {
public static void main(String args[]) {
Dog d = new Dog();
d.work();
}
}
الإخراج: ]]
الأكل ... نباح...في المثال أعلاه ، كل من فئات الحيوانات والكلاب لها طريقة EAT (). يعطى للطريقة المحلية. لاستدعاء طريقة الفئة الأصل ، نحتاج إلى استخدام الكلمة الرئيسية
Super .
للاتصال بمنشئ الفئة الأصل.
Super دعونا نلقي نظرة على مثال بسيط:
class Animal {
Animal() {
System.out.println("animal is created");
}
}
class Dog extends Animal {
Dog() {
super();
System.out.println("dog is created");
}
}
class TestSuper3 {
public static void main(String args[]) {
Dog d = new Dog();
}
}
الإخراج: ]]
يتم إنشاء الحيوان تم إنشاء الكلبملاحظة: إذا لم يكن هناك
super () أو
هذا () [) ]. (لإضافتها)
من المعروف جيدًا أنه إذا لم يكن هناك مُنشئ ، فسيوفر المترجم تلقائيًا المُنشئ الافتراضي. ومع ذلك ، فإنه يضيف أيضًا super ()
كبيان أول. (لإضافتها)
مثال آخر على الكلمة الرئيسية (لإضافتها)
class {
Animal () {
System.out.println ("تم إنشاء Animal") ؛
}
}
يمتد كلب الفئة الحيوان {
كلب() {
System.out.println ("يتم إنشاء الكلب") ؛
}
}
اختبارات الفئة 4 {
الفراغ الثابت العام (سلسلة args []) {
الكلب d = الكلب الجديد () ؛
}
}
الإخراج:
class Animal {
Animal() {
System.out.println("animal is created");
}
}
class Dog extends Animal {
Dog() {
System.out.println("dog is created");
}
}
class TestSuper4 {
public static void main(String args[]) {
Dog d = new Dog();
}
}
Super مثال: التطبيق العملي
(ليتم استكماله)لنرى التطبيق العملي لـ
Super الكلمة الرئيسية. هنا ، ترث فئة EMP فئة الشخص ، لذلك سيتم مورث جميع خصائص الشخص إلى EMP بشكل افتراضي. لتهيئة جميع الخصائص ، نستخدم مُنشئ الفئة الأصل من الفئة الفرعية. وبهذه الطريقة ، نعيد استخدام مُنشئ فئة الوالدين.
فئة شخص {
int id ؛
اسم السلسلة
الشخص (int id ، اسم السلسلة) {
this.id = id ؛
this.name = name ؛
}
}
الطبقة EMP يمتد الشخص {
راتب تعويم
EMP (int id ، اسم السلسلة ، راتب تعويم) {
سوبر (معرف ، اسم) ؛
هذا.
}
display void () {
System.out.println (id "" name "" "راتب) ؛
}
}
اختبارات الفئة 5 {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
EMP E1 = New EMP (1 ، "Ankit" ، 45000F) ؛
e1.display () ؛
}
}
الإخراج:
class Person {
int id;
String name;
Person(int id, String name) {
this.id = id;
this.name = name;
}
}
class Emp extends Person {
float salary;
Emp(int id, String name, float salary) {
super(id, name); // 重用父类构造函数
this.salary = salary;
}
void display() {
System.out.println(id " " name " " salary);
}
}
class TestSuper5 {
public static void main(String[] args) {
Emp e1 = new Emp(1, "ankit", 45000f);
e1.display();
}
}
المرجع: https://www.javatpoint.com/super-keyword ]]
يحافظ هذا الإخراج المنقح على المعنى الأصلي أثناء استخدام هياكل الصياغة والجملة المختلفة. ]تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3