Бейне: Неліктен C++ тілінде бірнеше мұраға қолдау көрсетіледі, бірақ Java-да жоқ?
2024 Автор: Lynn Donovan | [email protected]. Соңғы өзгертілген: 2023-12-15 23:49
C++ , Common lisp және бірнеше басқа тілдер бірнеше мұрагерлікті қолдайды кезінде java болмайды қолдау көрсету ол. Java мүмкіндік бермейді көп тұқым қуалаушылық одан туындайтын екіұштылықты болдырмау үшін. Мұндай мәселенің мысалының бірі - гауһар мәселесі көп тұқым қуалаушылық.
Тиісінше, неге Java-да бірнеше мұраға қолдау көрсетілмейді?
Java қолдайды көп тұқым қуалаушылық интерфейстер арқылы ғана. Класс интерфейстердің кез келген санын жүзеге асыра алады, бірақ тек бір сыныпты кеңейте алады. Көп тұқым қуалаушылық болып табылады емес қолдау көрсетіледі, себебі ол өлімге әкелетін гауһар мәселесіне әкеледі. Сіз интерфейстен ешқандай функционалдылыққа ие болмаңыз.
Сондай-ақ, бірнеше мұрадағы Алмаз мәселесі қандай? « алмаз мәселесі ” – бұл рұқсат берудің салдары ретінде туындауы мүмкін екіұштылық көп тұқым қуалаушылық . Бұл ауыр мәселе мүмкіндік беретін тілдер үшін (C++ сияқты). көп тұқым қуалаушылық мемлекеттің. Алайда Java тілінде көп тұқым қуалаушылық сыныптар үшін рұқсат етілмейді, тек интерфейстер үшін және олар күйді қамтымайды.
Сол сияқты, адамдар неге C++ бірнеше мұраны қолдайды, бірақ C# қолдамайды?
Көп тұқым қуалаушылық ішінде C# C# бірнеше мұраға қолдау көрсетпейді , өйткені олар бұл қосуды негіздеді көп тұқым қуалаушылық тым күрделілік қосты C# тым аз пайда бере отырып. жылы C# , сабақтарға ғана рұқсат етіледі мұрагер жалғыз ата-аналық сыныптан, ол жалғыз деп аталады мұрагерлік.
C++ бірнеше мұраны қалай қолдайды?
Көптеген басқа объектіге бағытталған бағдарламалау тілдерінен айырмашылығы, C++ мүмкіндік береді көп тұқым қуалаушылық . Көп тұқым қуалаушылық бала сыныбына мүмкіндік береді мұрагер бірнеше ата-ана сыныбынан. Жануарлар және бауырымен жорғалаушылар кластары мұрагер одан. Тек Animal класы breathe() әдісін қайта анықтайды.