কোটলিনে একই সময়ে প্রসারিত এবং বাস্তবায়ন করুন


94

জাভাতে, আপনি যেমনটি করতে পারেন:

class MyClass extends SuperClass implements MyInterface, ...

কোটলিনে কি একই কাজ করা সম্ভব? ধরে SuperClassনেওয়া বিমূর্ত এবং বাস্তবায়ন করে নাMyInterface

উত্তর:


149

ইন্টারফেস বাস্তবায়ন এবং শ্রেণীর উত্তরাধিকারের মধ্যে কোনও সিনট্যাক্টিক পার্থক্য নেই । :এখানে যেমন দেখানো হয়েছে তেমনভাবে কোলনের পরে সমস্ত ধরণের কমা-বিচ্ছিন্নভাবে তালিকাবদ্ধ করুন:

abstract class MySuperClass
interface MyInterface

class MyClass : MySuperClass(), MyInterface, Serializable

একাধিক শ্রেণির উত্তরাধিকার নিষিদ্ধ যখন একাধিক ইন্টারফেস একক শ্রেণীর দ্বারা প্রয়োগ করা যেতে পারে।


4
তাহলে কি অর্ডারটি গুরুত্বপূর্ণ, বা প্যারেন্টেসিসগুলি যত্ন করে কোন পিতামাতা এবং কোনটি ইন্টারফেসগুলি?
এসএমবিগস

আদেশ কেন গুরুত্ব দেবে তার কোনও কারণ আমি ভাবতে পারি না। হ্যাঁ, প্রতিটি বিমূর্ত শ্রেণীর জন্য ইন্টারফেসগুলি ছাড়া কাজ করার সময় পেরেনগুলির প্রয়োজন। সংকলক জানে যে আপনি কোনও ইন্টারফেস প্রয়োগ করছেন বা একটি সুপার ক্লাস প্রসারিত করছেন
s1m0nw1

3

যখন কোনও শ্রেণি প্রসারিত হয় (অন্য শ্রেণি) বা প্রয়োগ করা হয় (এক বা সার্টারাল ইন্টারফেস): এটি ব্যবহারের সাধারণ বাক্য গঠন

class Child: InterfaceA, InterfaceB, Parent(), InterfaceZ

নোট করুন যে ক্লাস এবং ইন্টারফেসের ক্রমটি কোনও ব্যাপার নয়।

এছাড়াও, লক্ষ্য করুন যে ক্লাসের জন্য আমরা বর্ধিত ক্লাসের জন্য বন্ধুত্বগুলি প্যারেন্ট ক্লাসের প্রধান নির্মাতাকে বোঝায়। অতএব, যদি পিতাম শ্রেণীর প্রধান নির্মাতা একটি যুক্তি নিয়ে থাকেন তবে শিশু শ্রেণীরও সেই যুক্তিটি পাস করা উচিত।

interface InterfaceX {
   fun test(): String
}

open class Parent(val name:String) {
    //...
}

class Child(val toyName:String) : InterfaceX, Parent("dummyName"){

    override fun test(): String {
        TODO("Not yet implemented")
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.