অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এ ইন্টারফেস এবং এবস্ট্রাক্ট ক্লাস কি ? এবং এই দুইটার মধ্যে পার্থক্য কি ?

asked 12 Aug '16, 14:44

osmangoninahid's gravatar image

osmangoninahid
315

retagged 23 Aug '16, 10:40

menon's gravatar image

menon
3.6k220


জাভা ৮ ভার্সন থেকে ইন্টারফেসে কিছু নতুন জিনিস যুক্ত হয়েছে ঃ

১। ডিফল্ট মেথড ঃ মেথড বডি আগে থেকেই লিখে দেয়া যাবে এবং যেসব ক্লাস ইন্টারফেস ইমপ্লিমেন্ট করবে তাদের ওই মেথড আবার না লিখলেও হবে। আর চাইলে ওইসব ক্লাস ডিফল্ট মেথড অভাররাইড করতেও পারবে।

২। স্ট্যাটিক মেথড ঃ ডিফল্ট মেথডের মতই, কিন্তু যে ইমপ্লিমেন্ট করবে সে এই মেথড অভাররাইড করতে পারবে না।

জাভা ৮ ব্যাবহার করলে ইন্টারফেস এবং এবস্ট্রাক্ট ক্লাস এর বৈশিষ্ট্য প্রায় একই ধরনের। কিন্তু তাও ইন্টারফেস ব্যাবহার করতে হবে কারন জাভা মাল্টিপল ইনহেরিটেন্স সাপোর্ট করেনা। অতএব, একটাকে আরেকটার বিকল্প হিসাবে ধরা যাবেনা।

permanent link

answered 11 Oct, 03:44

Nabil's gravatar image

Nabil
1414

InterfaceAbstract class এর মধ্যে অনেক পার্থক্য আছে । তার মধ্যে আমি কিছু বলার চেষ্টা করছি,

১)

আপনার যদি multiple inheritance দরকার হয় তখন আপনাকে Interface ব্যাবহার করতে হবে, যেমন,

public interface A { }
public interface B { }
public class C implements A, B { }

অন্য দিকে abstract class এ আপনি এই সুবিধা পাবেন না ।

২ )

interface এ আপনি কেবল abstract method রাখতে পারবেন অন্য দিকে abstract class এ আপনি abstract method ও non abstract method রাখতে পারবেন ।

৩ )

২ নং পয়েন্টের কারণেই interface এর মধ্যে কোন ফাংশনের ইমপ্লিমেন্টেসান থাকতে পারে না কিন্তু abstract class এ থাকতেও পারে নাও পারে যেমন,

public interface A {
    int func1();
    double func2();
    void func3();
}

public abstract class B {
    public void func() { System.out.prinln("This is general function"); }
    public abstract void func2() {
        // abstract method. So no implementation of this function 
    } 
}

তবে interface কে যে class implement করবে সেই ক্লাস যদি abstract না হয় তবে সেই ক্লাস কে অবশ্যই interface এর সব ফাংশন কে implement করেতে হবে । যেমন,

public class Hello implements A {
    int func1() { // write  implementation of func1 }
    double func2() { // write implementations of func2 }
    void func3() { // write implementation of func3 }
}

৪ )

interface এ আপনি static ও final variable রাখতে পারবেন । অন্য দিকে abstract class এ static, non static varible, final, non final variable রাখতে পারবেন ।

৫ )

Abstract class এ constructor , static method রাখা যায় অন্য দিকে Interfaceconstructor, static method রাখা যায় না ।

ধন্যবাদ :)

permanent link

answered 23 Aug '16, 09:43

menon's gravatar image

menon
3.6k220

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×193
×191
×23
×2
×1

question asked: 12 Aug '16, 14:44

question was seen: 1,161 times

last updated: 11 Oct, 03:44