C# 学习笔记——方法继承

继承

继承是面向对象程序设计的最重要的概念之一,继承允许我们根据一个类来定义另外一个类,这使得创建和维护应用程序更容易,同时也有利于代码的重用和节省开发时间。

语法:
[访问修饰符] Class 类名1(基类或父类)
{
···
}
[访问修饰符] Class 类名2(派生类或子类):类名1
{
···
}

object是所有类的基类。

//假设有一个基类Person,它的派生类是Student
//基类
public Class Person
{
	private string _name;
	private int _age;
	private char _gender;
}
//派生类
publuc Class Student:Person
{
	private int _id;
}

派生类从基类哪里继承了什么?

派生类继承了基类的属性和方法,但是并没有继承基类的私有字段。

派生类有没有继承基类的构造函数?

派生类没、有继承基类的构造函数,但是,派生类会默认的调用基类无参的构造函数,创建基类对象,让派生类可以使用基类的成员。所以,如果在基类中重新写了一个有参数的构造函数之后,那个无参数的就被干掉了,派生类就调用不到了,所以派生类会报错。
解决方法:
1)、在父类中重新写一个无参数的构造函数。
2)、在子类中显示的调用父类的构造函数,使用关键字**:base()**

继承的特性

1、继承的单根性:指的是一个子类只能有一个父类
2、继承的传递性:

//我叫zhang,我是一名篮球爱好者,我的爱好的打篮球,我今年18岁了,我是男生
	class Program
    {
        static void Main(string[] args)
        {
            Reporter re = new Reporter("zhang",18,'男',"打篮球");
            re.ReporterSayHello();
            Console.ReadKey();

        }
    }
    public class Person//基类
    {
        private string _name;
        private int _age;
        private char _gender;

        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }
        public int Age
        {
            get
            {
                return _age;
            }
            set
            {
                _age = value;
            }
        }
        public char Gender
        {

            get
            {
                return _gender;
            }
            set
            {
                _gender = value;
            }
        }

        public Person(string name, int age, char gender)
        {
            this.Name = name;
            this.Age = age;
            this.Gender = gender;
        }
    }
    public class Reporter : Person//派生类
    {
        private string _hobby;
        public string Hobby
        {
            get
            {
                return _hobby;
            }
            set
            {
                _hobby = value;
            }
        }
        public Reporter(string name, int age, char gender, string hobby)
            : base(name, age, gender)
        {
            this.Hobby = hobby;
        }
        public void ReporterSayHello()
        {
            Console.WriteLine("我叫{0},我是一名篮球爱好者,我的爱好是{1},我是{2}生,我今年{3}岁了",Name,Hobby,Gender,Age);
        }
    }

在这里插入图片描述

new关键字

new关键字的作用:
1、创建对象
2、隐藏从基类哪里继承过来的同名的成员(同名隐藏),隐藏的后果就是派生类调用不到基类的成员

	class Program
    {
        static void Main(string[] args)
        {
            Reporter rep = new Reporter();
            rep.SayHello();
            rep.Text();
            Console.ReadKey();
        }
    }
    public class Person
    {
        private string _name;
        private int _age;
        private char _gender;

        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }
        public int Age
        {
            get
            {
                return _age;
            }
            set
            {
                _age = value;
            }
        }
        public char Gender
        {

            get
            {
                return _gender;
            }
            set
            {
                _gender = value;
            }
        }

        public Person()
        {

        }
        public void SayHello()
        {
            Console.WriteLine("你好,我是人类");
        }
        public void Text()
        {
            Console.WriteLine("测试");
        }
    }
    public class Reporter : Person
    {
        private string _hobby;
        public string Hobby
        {
            get
            {
                return _hobby;
            }
            set
            {
                _hobby = value;
            }
        }

        public Reporter()
        {
        }

        public new void SayHello()
        {
            Console.WriteLine("你好,我是记者");
        }
    }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值