面向对象 封装 继承

Posted ༺҉戰҉༻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象 封装 继承相关的知识,希望对你有一定的参考价值。

一、封装

目的保护类,让类更加安全。

做法:让类里面的成员变量变为私有(即访问修饰符)的,做相应的方法或者属性去间接的操作成员变量

※访问修饰符

private 私有的              只能在该类中访问

protected 受保护的       只能在该类和它的子类中访问

public 公有的                在任何地方都可以访问

internal 内部的,默认的   程序集中可以访问,程序集就是命名空间

 

封装成员方法来间接操作类里面的成员变量

例:

class Ren
    {
        private string name;
        private int age;  //年龄必须在18-50之间
        //取age的值
        public int GetAge()
        {
            return age;
        }
        //给age赋值
        public void SetAge(int a)
        {
            if (age >= 18 && age <= 50)
            {
                age = a;
            }
            else
            {
                age = 18;
            }
        }
        //取name的值
        public string GetName()
        {
            return name;
        }
        //给name赋值
        public void SetName(string n)
        {
            name = n;
        }
    }
View Code
static void Main(string[] args)
        {
            Ren r = new Ren();
            r.SetAge(8);
            r.SetName("张三"); //将’张三‘赋值给成员name
            Console.WriteLine(r.GetAge+r.GetName);
            Console.ReadLine();
        }
View Code

△使用成员属性来间接访问类里面的成员变量

  定义变量的时候最好用_下划线开头

  选中要做的成员变量右键→重构→封装字段(ctrl+r,e)

      自动生成的代码不是成员变量也不是成员方法  是成员属性

      造好之后可以通过成员属性操作成员变量

例:

class Student
    {
        private string _Name;
        public string Name
        {
            get { return _Name; }//简化的方法
            set { _Name = value; }
        }
        private int _Age;
        public int Age 
        {
            get { return _Age; }
            set 
            {
                if (value >= 18 && value <= 50)
                {
                    _Age = value;
                }
                else
                {
                    _Age = 18;
                }
            }
        }

        private string _Sex;
        public string Sex {get;set;}//简写 缺点:不能控制值,不能用于构造函数
    }
View Code
static void Main(string[] args)
        {
            Student s = new Student();
            s.Name="赵四";
            s.Sex="";
            s.Age=19;
            Console.WriteLine(s.Sex+s.Name+s.Age);
            Console.ReadLine();
        }
View Code

构造方法(函数):

作用:造对象所要调用的方法,用来创建对象

      每一个类都有一个构造方法,不写也有只不过看不到而已

特殊性:写法特殊 (方法名=类名;没有返回值)

      执行时间特殊(创建对象时执行)

用途:可以对成员进行初始化

举个例子:

class Student
    {
        public Student(string s,string n)
        {
            _Sex = s;
            _Name = n;
        }
    }
View Code
static void Main(string[] args)
        {
           Student s = new Student("","张三");//new Student()就是调用了一个方法

            Console.WriteLine(s.Sex+s.Name);
            Console.ReadLine();
        }
View Code

二、继承

继承语法: 类名 : 父类名

子类 , xxx的派生类,超类

父类 , 基类

一个父类可以有无数个子类
一个子类可以有1个父类(亲爹)

子类并不是可以继承父类中所有的东西,而是可以继承父类中允许子类继承的内容,这个允许条件是依靠 访问修饰符 来做的权限

 

 

以上是关于面向对象 封装 继承的主要内容,如果未能解决你的问题,请参考以下文章

0面向对象三大机制 封装继承多态

0面向对象三大机制 封装继承多态

Python面向对象之:三大特性:继承,封装,多态。

面向对象之:三大特性:继承(已讲),封装,多态

19.Python面向对象之:三大特性:继承,封装,多态。

面向对象编程继承