C# 클래스 상속 요약

C# 클래스 상속 요약

1. 부모 클래스와 하위 클래스(기본 클래스와 파생 클래스)

클래스 상속에서 상속된 클래스는 기본 클래스(파생 클래스와 함께) 또는 부모 클래스(하위 클래스와 함께)라고 하며 상속된 클래스를 파생 클래스 또는 하위 클래스라고 합니다. 하위 클래스는 상위 클래스의 속성, 메서드 등을 상속하지만 하위 클래스는 상위 클래스의 전용 필드를 상속하지 않습니다.

public class Person
{
    
    
    public string _name;
    private int _age;
    
    public void SayHello()
    {
    
    
        Console.WriteLine("大家好,我是{0},我是人类", _name);
    }
}

public class Student:Person
{
    
    

}

class Program
{
    
    
    static void Main(string[] args)
    {
    
    
        Student stu = new Student();
        stu._name = "李明";
        stu.SayHello();//输出:大家好,我是李明,我是人类
        Console.ReadKey();
    }
}

하위 클래스 개체는 부모 클래스의 전용 필드에 액세스할 수 없습니다.

여기에 이미지 설명 삽입

2. 물려받은 기능

  1. 단일 루트

    子类只能继承一个父类,但一个父类可以有多个子类。所以C#不支持多重继承
    
  2. 전이성

    继承是可以传递的。子类不仅继承父类中声明的成员,也继承父类的父类中的声明成员。
    
    public class ancestor
    {
          
          
        public char _gender;
    }
    public class parent:ancestor
    {
          
          
        public string _name;
    }
    public class child:parent
    {
          
          
    
    }
    class Program
    {
          
          
        static void Main(string[] args)
        {
          
          
            child ch = new child();
            ch._name = "李华";
            ch._gender = '女';
        }
    }
    
  3. 자동 숨기기

    如果子类与父类存在相同的函数名,父类会自动隐藏该函数。因此子类调用与父类相同函数名的函数时,调用的是子类或者说是自己的函数。
    
    public class Person
    {
          
          
        public void SayHello()
        {
          
          
            Console.WriteLine("大家好,我是人类");
        }
    }
    
    public class Student:Person
    {
          
          
    	//如果有意隐藏,请使用关键字 new
        public new void SayHello()
        {
          
          
            Console.WriteLine("大家好,我是学生类");
        }
    }
    
    class Program
    {
          
          
        static void Main(string[] args)
        {
          
          
            Student stu = new Student();
            stu.SayHello();//输出:大家好,我是学生类
            Console.ReadKey();
        }
    }
    
    new的两个作用:
    
    1、创建类的对象
    2、隐藏从父类继承的同名成员,隐藏后子类调用不到父类成员
    

3. 부모 클래스의 생성자를 호출합니다.

하위 클래스는 부모 클래스의 생성자를 상속하지 않지만 하위 클래스는 기본적으로 부모 클래스의 매개 변수가 없는 생성자를 호출합니다. 부모 클래스의 인수 없는 생성자를 호출하는 목적은 부모 클래스의 개체를 생성하여 하위 클래스가 부모 클래스의 멤버를 사용할 수 있도록 하는 것입니다.

부모 클래스에서 매개 변수가 있는 생성자를 작성하면 하위 클래스는 매개 변수가 없는 생성자를 호출할 수 없으며 오류가 보고됩니다.

여기에 이미지 설명 삽입
해결책:

  1. 부모 클래스에서 매개 변수가 없는 생성자를 다시 작성합니다.

    public class Person
    {
          
          
        public string _name;
        public int _age;
        
        public Person()
        {
          
          
    
        }
        
        public Person(string name, int age)
        {
          
          
            _name = name;
            _age = age;
        }
    }
    
    public class Student:Person
    {
          
          
        
    }
    
    class Program
    {
          
          
        static void Main(string[] args)
        {
          
          
            Student stu = new Student();
            stu._name = "李华";
            stu._age = 18;
            Console.ReadKey();
        }
    }
    
  2. 하위 클래스에서 키워드 [base]를 사용하여 상위 클래스 생성자에 대한 호출을 표시합니다.

    public class Person
    {
          
          
        public string _name;
        public int _age;
    
        public Person(string name, int age)
        {
          
          
            _name = name;
            _age = age;
        }
    }
    
    public class Student:Person
    {
          
          
        public Student(string name, int age):base(name, age)
        {
          
          
    
        }
    }
    
    class Program
    {
          
          
        static void Main(string[] args)
        {
          
          
            Student stu = new Student("李华", 18);
            Console.ReadKey();
        }
    }
    

저자의 제한된 에너지로 인해 기사에 약간의 실수와 누락이 불가피하게 나타날 수 있으므로 전문가와 네티즌의 비판과 수정을 환영합니다.

추천

출처blog.csdn.net/qq_46051312/article/details/123315660