Как получить доступ к некоторым свойствам (не всем) родительского класса в дочернем классе? - PullRequest
0 голосов
/ 31 января 2019

У меня есть класс Person (родительский класс), который содержит некоторые свойства.Допустим, 2 свойства.Я хочу получить доступ к 1 свойствам из 2 свойств в Student (дочерний класс) из класса Person (родительский класс).

Примечание. Все свойства являются общедоступными, которые мне нужно использовать в другом дочернем классе.

Как мне добиться этого с помощью C #?(Это относится к любым объектно-ориентированным языкам программирования)

Ниже приведен мой пример кода.

using System;  

public class Person  
{  
   public string name; //only want this property in all child classes
   public float salary;  //don't want to access this property in Student
}

public class Student: Person  
{  
   public string subject;  
}

public class Employee: Person  
{
   public int employeeId;
}

Ответы [ 3 ]

0 голосов
/ 31 января 2019

Вы можете использовать интерфейс для достижения того, к чему вы стремитесь.Это не мешает компилятору создавать свойство Salary для студенческого объекта.Но с помощью IStudent вы можете ограничить доступ конечного пользователя.

public class Person
{
    public string Name { get; set; } //only want this property in all child classes
    public float Salary { get; set; } //don't want to access this property in Student
}
interface IStudent
{
    string Name { get; set; }
    string Subject { get; set; }
}

public class Employee : Person
{
    public int EmployeeId { get; set; }
}

public class Student : Person, IStudent
{
    public string Subject { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        IStudent s = new Student() { Name = "Student1", Subject = "Subject1" };
        Console.WriteLine(s.Name);
    }
}
0 голосов
/ 02 февраля 2019

В вашем коде есть концептуальная проблема!Заработная плата не является достаточно общей, чтобы быть в личном классе (не у каждого человека есть зарплата).Вы не должны включать это свойство в класс Person.Использование интерфейса поможет только в том случае, если:

  • у вас есть несколько подклассов, а у некоторых из них есть оклады
  • , вам нужно управлять подклассами, которые имеют оклады как группу, не зная конкретного типакаждого (например, полиморфизм).

Надеюсь, что помогает!

0 голосов
/ 31 января 2019

Вы не должны иметь зарплату в качестве поля Person, если только у всех людей нет зарплаты, вместо этого она должна идти в класс Employee или в самый высокий класс, использующий зарплату

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...