6.C#面向对象:封装,继承,多态

1,封装(字段和属性)

属性字段使用private修饰。使用get和set方法进行封装来访问。
隐式参数value,也可以选中字段,右键重构封装,使用模板代码,快捷键Ctrl+R,E

class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student();
            stu.Name = "tom";
            Console.WriteLine(stu.Name);
        }
    }
    //类的定义
    public class Student
    {
        //类的属性
        private  string name;
        public string Name
        {
            get
            {
                return this.name;
            }
            set
            {
                //对输入的合法性进行判断再赋值
                //隐式参数value
                this.name = value;
            }

        }

    }

2,继承

继承

class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student();
            stu.name = "tom";
            Console.WriteLine(stu.name);
        }
    }
    //基类
    public class Person
    {
        //类的属性
        public string name;

    }
    //Student继承Person
    public class Student:Person
    {
      

    }

调用父类的构造函数 : base

class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student("tom");
            Console.WriteLine(stu.name);
        }
    }
    //基类
    public class Person
    {
        //类的属性
        public string name;
        public Person(string name){
            this.name = name;
        }
    }
    //Student继承Person
    public class Student:Person
    {

        public Student(string name)
            : base(name)
        {

        }
    }
子类方法和父类重名

子类方法使用 new 修饰表示对父类方法的覆盖

virtual虚方法

修饰的方法,子类可以进行重写,使用override 进行重写声明(只能针对virtual修饰的方法)

class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student("tom");
            Console.WriteLine(stu.name);
        }
    }
    //基类
    public class Person
    {
        //类的属性
        public string name;
        public Person(string name){
            this.name = name;
        }
        public virtual void Say(){

        }

    }
    //Student继承Person
    public class Student:Person
    {

        public Student(string name)
            : base(name)
        {

        }

        public override void Say()
        {
            base.Say();
        } 


    }

3,多态

多个不属于同类的对象,对同一个消息(抽象类方法的不同实现)做出不同的反应。

抽象类

使用abstract修饰。抽象类本身不能被实例化,只能作为其他类的基类使用。
抽象类不能实例化
抽象类不能被继承
子类必须重写抽象父类的抽象方法(override)

接口interface

只提供定义而不提供实现。是一个特殊的抽象方法,子类实现该方法的时候不需要使用override。
接口和抽象类不同,没有字段和属性,只定义方法。
子类只能继承一个抽象类,但是可以实现多个接口。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力修福报

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值