zoukankan      html  css  js  c++  java
  • 面向对象 封装 、继承

    一、封装

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

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

    ※访问修饰符

    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个父类(亲爹)

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

     

  • 相关阅读:
    C++学习笔记 继承,虚基类
    C++ 学习笔记 静态成员与常成员
    C++学习笔记,初始化列表与构造函数
    C++ 学习笔记 运算符优先级
    C++学习笔记 this指针,对象数组,对象指针数组;
    C++初级基础笔记 标识符 关键字
    C++学习笔记 指向类的数据成员的指针
    C++学习笔记 const修饰类成员与成员函数
    虚幻学习day2 简单手电筒与开关门效果(一)
    虚幻学习Day1(二) 触碰控制灯光开关
  • 原文地址:https://www.cnblogs.com/shadow-wolf/p/6103284.html
Copyright © 2011-2022 走看看