السلام عليكم
ما هو الفرق بين Abstract Class و Interface Class
أرجوا من لديه دراية عن الموضوع أن يزودنا بأمثلة يشرح فيه abstract class و Interface Class
جزاكم الله خيرا
السلام عليكم
ما هو الفرق بين Abstract Class و Interface Class
أرجوا من لديه دراية عن الموضوع أن يزودنا بأمثلة يشرح فيه abstract class و Interface Class
جزاكم الله خيرا
abstract class
هى class ولكنها تحتوى على دوال ليس بداخلها كود
تستخدم فى عمليه الوراثه
ان تكون الـ abstract class تحتوى على دوال لا يتم عمل الكود الذى يقوم بها
وعندما تريد ان ترث منها لابد من عمل override لهذه الدوال
هذا الفرق بينها وبين الـ class العاديه
وممكن ان تحتوى على خليط من الدوال العاديه والدوال الـabstract
وتحتوى على متغيرات ويخزن بداخلها بيانات
والدوال الـabstract لابد وان تكون الـ class التى تحتويهم هى الاخرى abstract
لكن الـ Interface Class
اعتقد انه الاصح انك تطلق عليها Interface فقط
المهم
هذا يستخدم دائما فى حل مشكله الوراثه المتعدده فى حاله تشابه اسماء الدوال مع بعضها البعض
وكل الدوال التى بداخله abstract فقط ولا تحتوى على دوال عاديه
اقصد بدوال عاديه يعنى التى تقوم بعمل شىء بداخلها كود يعنى
ولا يمكن ان تحتوى على متغيرات تخزن بها قيم وتسترجعها وهكذا
لكن هناك حاله وحيده يمكنك ان تعرف بها المتغيرات فى الـInterface
هى ان تكونfinal , static
اظن ان هذه وجه نظر عامه عن الفرق بينها
بالتوفيق
تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 20 سبتمبر 2010 في 16:01
هذا مثال على كيفيه كتابه الـ 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:
سلام عليكم