English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
اليوم سأتحدث عن فهمي الخاص للكلاسات المجردة والمفاهيم في Java، مع محتوى مرجعي:
I、الكلاس المجرد
1، التعريف:
public abstract class اسم_الكلasse{}
في لغة Java، جميع الأجسام يتم وصفها باستخدام الكلاسات، ولكن ليس جميع الكلاسات تستخدم لوصف الأجسام. ما أفهمه من الكلاس المجرد هو استخراج جزء عام من نفس الفئة من الأشياء، هذا الجزء العام يشمل الخصائص والسلوكيات. على سبيل المثال، البقر والماعز والخنازير لديها خصائص عامة مثل الحيوانات الشعرية، والسلوكيات العامة مثل الرضاعة، لذا يمكننا تجميع الجزء العام في فئة رضاعة تحتوي على خصائص الشعر وسلوك الرضاعة، وعندما يرث البقر والماعز والخنازير فئة الرضاعة، يكتسبون وظيفة الرضاعة، وبالنسبة ل كيفية تنفيذ هذه الوظيفة، يجب على الشخص نفسه تنفيذها.
2、خصائص
الصفات المعدلة بـAbstract هي كلاسات مجردة؛
2) الصف الذي يحتوي على الطريقة التجريبية يجب أن يكون صفًا مفترضًا، ولكن الصف المفترض لا يجب أن يحتوي على الطريقة التجريبية؛ ويجب أن تكون الطريقة التجريبية public أو protected، وإلا لا يمكن توريثها من قبل الصف الفرعي. افتراضيًا هو public.
3) لا يمكن أن تحتوي الطريقة التجريبية على تنفيذ، وإلا سيتم إصدار خطأ في التجميع؛
4) يمكن تعريف الصفات والطرق الكائنة الخاصة في الصف المفترض؛
5) عند توريث الصف من الصف المفترض، يجب تنفيذ جميع الطرق التجريبية في الصف المفترض، وإلا يجب تعريف الصف الفرعي أيضًا كصف مفترض؛
6) لا يمكن إنشاء نماذج من الصف المفترض.
3، التحقق مما إذا كانت هذه القواعد صحيحة كما وردت
هذه هي الصفحة التي قمت بتحريرها في وورد، وقمت بتقطيعها إلى صورة ووضعها هنا:
من النتائج التي تأتي من الشكل، فإن هذه النظريات صحيحة
ثانيًا: الواجهة
1، التعريف:
public interface اسم_الواجهة{}
الواجهة تستخدم لتقديم الطرق. وفقًا لفهمي، فإنها تمثل استخراج عالٍ للسلوكيات المشتركة بين عدة صفوف، مثل أن السلوكيات المشتركة بين جميع الحيوانات هي الأكل والنوم، لذا يمكننا استخراج هذين السلوكين وتقديمهم في واجهة، وعندما يحتاج حيوان معين إلى تنفيذ هذا السلوك، يمكنه فقط التصفح في الواجهة، ثم تنفيذ التنفيذ المحدد في صفه الخاص. بهذه الطريقة، يبدو أن هذا ليس مختلفًا عن الصف المفترض، لذا دعونا نرى هذا المثال أدناه. إذا تم وضع هذين السلوكين في الصف المفترض، ولكن الصف المفترض يحتوي أيضًا على سلوك التلقيح، عند هذا النوع من الحيوانات التي تتحرك بالزحف مثل الأفعى، عند توريث هذا الصف، سيتم تنفيذ هذه الطرق الثلاث: الأكل والنوم والزحف، وبالتالي سيحصل على وظائف الأكل والنوم والزحف؛ ولكن إذا كان لديك حيوان طائر مثل الطائر، عند توريث هذا الصف، سيحصل أيضًا على وظائف الأكل والنوم والزحف، ولكن الزحف ليس هو الوظيفة التي يحتاجها، مما يجعله غير واضح، ولكن عندما يرثوا واجهة تحتوي فقط على الأكل والنوم، فإن لديهم وظائف الأكل والنوم الأساسية، ويمكننا استخراج الزحف والطيران وتقديمها في الصف المفترض، وتوريثها حسب الحاجة، وتنفيذ الوظائف التي يحتاجونها حسب الحاجة هو كل شيء على ما يرام.
2、صفات:
1) يمكن للواجهة أن تحتوي على صفات كائنة خاصة بها، ولكن سيتم تحديد كلاها بشكل تلقائي على أنها public static final، ويمكن أن تكون فقط public static final، كل طرق الواجهة هي طرق تجريبية، سيتم تحديد كلاها بشكل تلقائي على أنها public abstract.
2) تحتوي الواجهة فقط على الطرق التجريبية، وليس لديها أي تنفيذ محدد؛
3) يجب على الصف الذي يحقق الواجهة تنفيذ جميع الطرق المحددة في الواجهة؛
3、تحقق مما إذا كانت هذه النظريات صحيحة
بالطبع، يمكن التحقق من صحة هذه النظريات جميعها!
ثالثًا: الفرق بين الصف المفترض والواجهة:
1、الصف المفترض يمكن أن يحتوي على طرق كائنة الخاصة بهم وأساليب تنفيذهم؛ وواجهة تحتوي فقط على الطرق التجريبية;
2、الصفات الكائنة في الصف المفترض يمكن أن تكون من أنواع مختلفة من المتغيرات؛ المتغيرات في واجهة يجب أن تكون public static final فقط;
3、يمكن للفئة توريث فئة واحدة فقط من الفئات العشوائية،لكن يمكنها تحقيق عدة واجهات;
4、يمكن للفئات العشوائية تحتوي على كتل برمجية ثابتة ومETHODS الثابتة؛وفي الواجهات لا يمكن تحديد كتل برمجية ثابتة ومETHODS الثابتة؛
تأكيد أن الفئة يمكنها توريث فئة واحدة فقط من الفئات العشوائية،لكن يمكنها تحقيق عدة واجهات
أولاً،تحديد فئتين عشوائيتين: فئة Mummals الثدييات، وفئة Crawler التسلق
/** * @createtime 2017年3月17日 上午10:33:27 * @description فئة الثدييات */ public abstract class Mammals { public String foods; public abstract void nurse(); public void eat(String food){ this.foods = food; System.out.println("أكل"+foods); } }
/** * * @createtime 2017年3月17日 上午11:23:09 * @description تحديد فئة抽象ية--فئة التسلق */ public abstract class Crawler { public abstract void crawl(); }
ثم،تحديد واجهتين: واجهة BaseAction الأساسية؛وواجهة SpecialAction الخاصة
/** * * @createtime 2017年3月17日 上午11:03:42 * @description تحديد واجهة تُدعى السلوك الأساسي */ public interface BaseAction { public String name = ""; public void eat(); public void sleep(); }
/** * @createtime 2017年3月17日 上午11:24:56 * @description تحديد واجهة لتحقيق السلوك الخاص */ public interface SpecialAction { public void study(); }
ثم،تحديد فئة أساسية تُدعى People،تورث من فئة Mummals،وتحقق من واجهة BaseAction و SpecialAction
/** * @createtime 2017年3月17日 上午11:25:48 * @description تعريف فئة عادية - البشر، توريث فئة الثدييات وتنفيذ واجهات أساسية وواجهات خاصة */ public class People extends Mammals implements BaseAction,SpecialAction{ @Override public void study() {}} // TODO Auto-generated method stub } @Override public void eat() { // TODO Auto-generated method stub } @Override public void sleep() { // TODO Auto-generated method stub } @Override public void nurse() { // TODO Auto-generated method stub } }
من الواضح أن الفئة الفرعية يمكنها تنفيذ عدة واجهات
في النهاية، تجعل الفئة الأساسية People تورث كلاً من الفئة Mummals والفئة Crawler
/** * @createtime 2017年3月17日 上午11:25:48 * @description تعريف فئة عادية - البشر، توريث فئة الثدييات وتنفيذ واجهات أساسية وواجهات خاصة */ public class People extends Mammals,Crawler{ @Override public void nurse() { // TODO Auto-generated method stub } }
الخاتمة
هذا هو محتوى المقال الكامل حول فهمي الشخصي للصفات الم抽象ة وواجهات Java، آمل أن يكون مفيداً لكم. يمكن للزوار المهتمين مواصلة القراءة في هذا الموقع:
مثال على توريث bean وتبسيط الكود في Spring
الفكرة الأساسية لـ Hibernate والتعريف القصير لواجهات
مثال على استخدام واجهة (interface) في Java
إذا كان هناك نقص، فالرجاء ترك تعليق. شكراً للأصدقاء على دعم هذا الموقع!
بيان: محتوى هذا المقال تم جمعه من الإنترنت، حقوق الطبع محفوظة للمالك الأصلي، تم جمع المحتوى من قبل المستخدمين عبر الإنترنت بشكل تلقائي، هذا الموقع لا يمتلك حقوق الملكية، لم يتم تعديل المحتوى بشكل يدوي، ولا يتحمل أي مسؤولية قانونية. إذا اكتشفت أي محتوى يشتبه في انتهاك حقوق النسخ، فالرجاء إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # بـ @) للإبلاغ، وقدم الدليل على الدليل، إذا تم التحقق من ذلك، فإن هذا الموقع سيرحل على الفور عن المحتوى المشبوه.