الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما هو الفرق بين Abstract Class و Interface Class

بدأه ishere11 في 20 سبتمبر 2010 · 2 رد · 16,920 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ما هو الفرق بين Abstract Class و Interface Class

أرجوا من لديه دراية عن الموضوع أن يزودنا بأمثلة يشرح فيه abstract class و Interface Class

جزاكم الله خيرا

#2

abstract class

هى class ولكنها تحتوى على دوال ليس بداخلها كود

تستخدم فى عمليه الوراثه

ان تكون الـ abstract class تحتوى على دوال لا يتم عمل الكود الذى يقوم بها

وعندما تريد ان ترث منها لابد من عمل override لهذه الدوال

هذا الفرق بينها وبين الـ class العاديه

وممكن ان تحتوى على خليط من الدوال العاديه والدوال الـabstract

وتحتوى على متغيرات ويخزن بداخلها بيانات

والدوال الـabstract لابد وان تكون الـ class التى تحتويهم هى الاخرى abstract

لكن الـ Interface Class

اعتقد انه الاصح انك تطلق عليها Interface فقط

المهم

هذا يستخدم دائما فى حل مشكله الوراثه المتعدده فى حاله تشابه اسماء الدوال مع بعضها البعض

وكل الدوال التى بداخله abstract فقط ولا تحتوى على دوال عاديه

اقصد بدوال عاديه يعنى التى تقوم بعمل شىء بداخلها كود يعنى

ولا يمكن ان تحتوى على متغيرات تخزن بها قيم وتسترجعها وهكذا

لكن هناك حاله وحيده يمكنك ان تعرف بها المتغيرات فى الـInterface

هى ان تكونfinal , static

اظن ان هذه وجه نظر عامه عن الفرق بينها

بالتوفيق

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 20 سبتمبر 2010 في 16:01

1

Software Developer
Mahmoudkelany.com


 

#3

هذا مثال على كيفيه كتابه الـ Abstract class , interface

/**
 *
 * @author Mahmoud Mahrous
 */
public abstract class Vehicle {

    String vehicleName;
    int speed;

    public void setVehicleName(String vehicleName) {
        this.vehicleName = vehicleName;
    }

    public int getSpeed() {
        return speed;
    }

    public void setSpeed(int speed) {
        this.speed = speed;
    }

    public abstract void move();

    public abstract void stop();
}

هذه هى كلاس تحتوى على داليتين abstract هما move , stop

================================

/**
 *
 * @author Mahmoud Mahrous
 */
public interface VechileInterface {

    public void front();

    public void back();

    public void turnLeft();

    public void turnRight();
}

وهذا interface كل الداول التى بداخله abstract ولا يمكن ان تحتوى على كود بداخلها

===============================

هيا بنا نرث من الـ Vehicle class

اول ما اكتب هذا السطر

public class Car extends Vehicle {

اتومتيكيا النت بينز بيظهر لى علامه خطا بيقولى ان فيه دوال abstract عاوز اعمل ليها implement

بقوله اعمل هيظهر لى الكود بتاعها بالشكل التالى

/**
 *
 * @author Mahmoud Mahrous
 */
public class Car extends Vehicle {

    @Override
    public void move() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void stop() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

================================

هيا بنا على نفس الكلاس السابقه ونجعلها تعمل implements لـ VechileInterface اللى احنا عملناه ممن قبل

اول ما هاعمل

  implements VechileInterface

النت بينز اتوماتيكيا هيقولى ان فيه دوال abstract عاوز اعمل ليها implement

بقوله اعمل هيظهر لى الكود بتاعها بالشكل التالى

public class Car extends Vehicle implements VechileInterface{

    @Override
    public void move() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void stop() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void front() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void back() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void turnLeft() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void turnRight() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

اتمنى ان تكون اتضح الامر ولو قليلا

بالتوفيق :wub:

سلام عليكم

1

Software Developer
Mahmoudkelany.com


 

مواضيع مشابهة