Запитання з тегом «inheritance»

Спадкування - це спосіб повторного використання коду існуючих об'єктів або встановлення підтипу з існуючого об'єкта або обох, залежно від підтримки мови програмування.

14
Звідки береться таке поняття «корисний склад над спадщиною»?
В останні кілька місяців мантра "прихильність композиції над спадщиною", схоже, виникла з нізвідки і стала майже якоюсь мемою всередині спільноти програмування. І кожного разу, коли я це бачу, я трохи загадую. Це як би хтось сказав "віддайте перевагу свердлам над молотками". На мій досвід, склад і успадкування - це два …

9
Чи є якась "реальна" причина, коли багаторазове спадкування ненавидять?
Мені завжди подобалася думка про підтримку декількох успадкованих мов. Найчастіше, хоча це навмисно пропало, і передбачувана "заміна" - це інтерфейси. Інтерфейси просто не охоплюють все одне й те саме багаторазове успадкування, і це обмеження час від часу може призвести до збільшення кодового коду. Єдина основна причина, про яку я коли-небудь …

5
Чому я віддаю перевагу складу над спадщиною?
Я завжди читав, що композиція має перевагу над спадщиною. Наприклад, повідомлення в блозі про несхожі види , наприклад, виступає за використання композиції над успадкуванням, але я не бачу, як досягається поліморфізм. Але у мене таке відчуття, що коли люди кажуть, що віддають перевагу композиції, вони дійсно мають на увазі перевагу …

12
Чому наслідування Square з прямокутника буде проблематичним, якщо ми перекриємо методи SetWidth та SetHeight?
Якщо квадрат - це тип прямокутника, то чому квадрат не може успадкувати прямокутник? Або чому це поганий дизайн? Я чув, як люди кажуть: Якщо ви зробили квадратний похід від прямокутника, то квадрат повинен бути корисним у будь-якому місці, де ви очікуєте прямокутник У чому тут проблема? І чому площа може …

7
Коли використовувати абстрактні класи замість інтерфейсів із методами розширення в C #?
"Абстрактний клас" та "інтерфейс" є подібними поняттями, причому інтерфейс є більш абстрактним з двох. Одним з відмінних факторів є те, що абстрактні класи забезпечують реалізацію методів для похідних класів, коли це необхідно. Однак у C # цей диференціюючий коефіцієнт був зменшений нещодавним введенням методів розширення, які дозволяють забезпечити реалізацію методів …

11
Чому добре розділити програму на кілька класів? [зачинено]
Я ще учень середньої школи (вступає в 10 клас), і мені ще належить пройти фактичний комп’ютерний курс у школі. Все, що я робив до цього часу, - це через книги. Ці книги навчили мене таким поняттям, як спадкування, але як допомагає розщеплення програми на кілька класів? Книги мені ніколи не …

17
Чи OO-програмування дійсно так важливо, як наймають компанії? [зачинено]
Я тільки закінчу магістратуру (з обчислювальної техніки) і подаю заявку на роботу. Я помітив, що багато компаній спеціально просять зрозуміти орієнтацію на об'єкти. Популярні питання інтерв'ю стосуються спадщини, поліморфізму, приналежності тощо. Чи справді ОО є таким вирішальним? У мене навіть було співбесіду для роботи з програмування в C, а половина …

1
Наскільки міксини або риси краще, ніж звичайне багаторазове успадкування?
У C ++ є багаторазове успадкування, багато мовних конструкцій забороняють це як небезпечне. Але деякі мови, такі як Ruby і PHP, використовують дивний синтаксис, щоб зробити те ж саме, і називають його mixins або traits. Я багато разів чув, що міксини / риси складніше зловживати, ніж звичайне багаторазове успадкування. Що …

3
Що таке система типів?
Фон Я проектую мову, як побічний проект. У мене є робочий асемблер, статичний аналізатор і віртуальна машина для цього. Оскільки я вже можу компілювати та запускати нетривіальні програми, використовуючи побудовану інфраструктуру, я подумав над тим, щоб подати презентацію у своєму університеті. Під час своєї розмови я зазначив, що VM забезпечує …

8
LSP проти OCP / Liskov Заміна VS Open Close
Я намагаюся зрозуміти тверді принципи ООП і дійшов висновку, що LSP і OCP мають деякі подібності (якщо не сказати більше). принцип відкритого / закритого типу визначає, що "програмні об'єкти (класи, модулі, функції тощо) повинні бути відкритими для розширення, але закритими для модифікації". LSP простими словами зазначає, що будь-який примірник Fooможе …

5
Чому успадковувати клас та не додавати властивості?
Я знайшов дерево спадкування у нашій (досить великій) кодовій базі, яка має щось подібне: public class NamedEntity { public int Id { get; set; } public string Name { get; set; } } public class OrderDateInfo : NamedEntity { } З того, що я міг зібрати, це в першу чергу …

11
Підкласи, що стосуються лише конструктора: це антитіло?
Я мав дискусію з колегою, і у нас виникли суперечливі інтуїції щодо мети підкласифікації. Моя інтуїція полягає в тому, що якщо основною функцією підкласу є вираження обмеженого діапазону можливих значень його батьківського, то, ймовірно, це не повинно бути підкласом. Він заперечував протилежну інтуїцію: підкласинг представляє більш "специфічний" об'єкт, і тому …

9
Чи створення підкласів для конкретних випадків є поганою практикою?
Розглянемо наступну конструкцію public class Person { public virtual string Name { get; } public Person (string name) { this.Name = name; } } public class Karl : Person { public override string Name { get { return "Karl"; } } } public class John : Person { public override …

11
Чи застарілі заняття / методи застарілі?
Я використовував для створення багатьох абстрактних класів / методів. Потім я почав використовувати інтерфейси. Зараз я не впевнений, чи інтерфейси не роблять абстрактні класи застарілими. Вам потрібен повністю абстрактний клас? Створіть замість цього інтерфейс. Вам потрібен абстрактний клас з деякою реалізацією в ньому? Створіть інтерфейс, створіть клас. Успадкуйте клас, реалізуйте …

3
Чи порушує "склад над успадкуванням" "сухий принцип"?
Наприклад, врахуйте, що у мене є клас для інших класів, який слід продовжити: public class LoginPage { public String userId; public String session; public boolean checkSessionValid() { } } і деякі підкласи: public class HomePage extends LoginPage { } public class EditInfoPage extends LoginPage { } Насправді, підклас не має …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.