面向对象 封装 继承
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; } }
static void Main(string[] args) { Ren r = new Ren(); r.SetAge(8); r.SetName("张三"); //将’张三‘赋值给成员name Console.WriteLine(r.GetAge+r.GetName); Console.ReadLine(); }
△使用成员属性来间接访问类里面的成员变量
定义变量的时候最好用_下划线开头
选中要做的成员变量右键→重构→封装字段(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;}//简写 缺点:不能控制值,不能用于构造函数 }
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(); }
构造方法(函数):
作用:造对象所要调用的方法,用来创建对象
每一个类都有一个构造方法,不写也有只不过看不到而已
特殊性:写法特殊 (方法名=类名;没有返回值)
执行时间特殊(创建对象时执行)
用途:可以对成员进行初始化
举个例子:
class Student { public Student(string s,string n) { _Sex = s; _Name = n; } }
static void Main(string[] args) { Student s = new Student("男","张三");//new Student()就是调用了一个方法 Console.WriteLine(s.Sex+s.Name); Console.ReadLine(); }
二、继承
继承语法: 类名 : 父类名
子类 , xxx的派生类,超类
父类 , 基类
一个父类可以有无数个子类
一个子类可以有1个父类(亲爹)
子类并不是可以继承父类中所有的东西,而是可以继承父类中允许子类继承的内容,这个允许条件是依靠 访问修饰符 来做的权限
以上是关于面向对象 封装 继承的主要内容,如果未能解决你的问题,请参考以下文章