2016-04-08 4 views
1

согласно словарю WordWeb «Расширение» означает «Увеличение области действия, диапазона или области». Поэтому, если мы будем помнить об этом и наследовать, тогда в этом случае производный класс просто увеличивает атрибуты и функции базового класса. Но на самом деле, делая наследование, мы меняем эту концепцию. Например, в базовом классе каждая внутренняя функция может получить доступ к своим частным членам, но в производном классе это поведение изменено, функции производного класса не могут получить доступ к своим личным членам данных родителя. Поэтому, пожалуйста, объясните, как и когда мы называем «Наследование» как «Расширение» базового класса.Уместно ли называть наследование как EXTEND класса

Заранее спасибо.

+1

Не совсем связаны между собой, но в некотором смысле это: https://en.wikipedia.org/wiki/Liskov_substitution_principle – zegkljan

+0

Спасибо за ссылку. Я думаю, вы как-то поняли, но я не могу четко рассказать об этом. Также вместо того, чтобы просто говорить о расширении базового класса, не нужно ли явно указывать все наследование как «Partial Extend», потому что просто сказать «Extend» может быть неверным? – dplank

+1

Я думаю, что вы слишком сильно придерживаетесь слов. «Расширение» - это просто (ключевое) слово, которое наследует один класс от другого. Я думаю, что «расширение» используется, потому что обычно это случай - у нас есть класс, и мы хотим создать еще один класс, который может сделать больше. Кроме того, ваша «смена концепции» также вызывает сомнения. Да, внутри подкласса у вас есть немного другая концепция, но из-за пределов (под) класса, если подкласс соответствует принципу подстановки, концепция остается прежней. – zegkljan

ответ

0

Все, что является приватным, принадлежит классу, поэтому его нельзя унаследовать. По наследованию вы получаете доступ ко всему, что общедоступно или доступно другим модификаторам доступа. Говоря простыми словами, это означает, что унаследованный класс делится тем, что может быть разделено (частный является приватным, как говорит слово) с другим классом или классами, которые наследуют его. Я предлагаю вам больше узнать об этом, поскольку это одна из основных концепций в Java или любых других объектно ориентированных языках (на самом деле это не связано с языком, а с Object Orientated Programming).

+0

Спасибо, но мой вопрос не связан с концепцией наследования, но вопрос касается «Наследование» со значением слова «Расширяет». Потому что, делая наследование, мы не просто расширяем наш базовый класс, но также меняем некоторые внутренние поведения. – dplank

1

В коде вы можете получить доступ к методам и свойствам базового класса.

Если бы я получил

public class A 
{ 
public void MakeSauce() {} 
} 

Тогда

public class B : A 
{ 
public B() 
{ 
MakeSauce(); 
} 
} 

является действительным конструктор, где это вызов метода, унаследованного от А. Однако, как унаследованного класса вы можете также дать ваш собственный «поворот» в MakeSauce.

I.e.

public class A 
{ 
public virtual void MakeSauce() { Console.WriteLine("I made sauce!"} 
} 

затем

class B : A 
{ 
    public B() 
    { 
     MakeSauce(); // call A's implementation 
    } 

    public override void MakeSauce() // override A implementation 
    { 
     Console.WriteLine("I made 2 gallons of sauce."); 
    } 
} 
Смежные вопросы