13.面向对象-封装-内部类和分部类
13.1 知识点
知识回顾
class 类名
{
#region 特征——成员变量
#endregion
#region 行为——成员方法
#endregion
#region 初始化调用——构造函数
#endregion
#region 释放时调用——析构函数
#endregion
#region 保护成员变量——成员属性
#endregion
#region 像数组一样使用——索引器
#endregion
#region 类名点出使用——静态成员
#endregion
#region 自定义对象可计算——运算符重载
#endregion
}
#region 静态类和静态构造函数
#endregion
#region 拓展方法
#endregion
内部类
概念:在一个类中再申明一个类
特点:使用时要用包裹者点出自己
作用:亲密关系的变现
注意:访问修饰符作用很大
实例
// 人 类
class Person
{
public int age;
public string name;
//身体 成员变量
public Body body;
// 内部 身体 类
public class Body
{
//胳膊 成员变量
Arm leftArm;
Arm rightArm;
//内部 胳膊 类
class Arm
{
}
}
}
主函数内
Person p = new Person();
//Body body = new Body();
//报错 内部类使用时要用包裹者点出自己
Person.Body body = new Person.Body();//正确用法
//Person.Body.Arm = new Person.Body.Arm();
//报错 胳膊类没有public 默认是私有 由于其保护级别而无法访问
分部类
概念:把一个类分成几部分申明
关键字:partial
作用:
- 分部描述一个类
- 增加程序的拓展性
注意: - 分部类可以写在多个脚本文件中
- 分部类的访问修饰符要一致
- 分部类中不能有重复成员
实例
//学生 分布类1
public partial class Student
{
public bool sex;
public string name;
}
//学生 分布类2 访问修饰符要和学生分布类1一致是public
public partial class Student
{
public int number;
//public bool sex;//报错 分部类中不能有重复成员
}
//可以写在多个脚本文件中 在实践中运用
主函数内
Student student1 = new Student();
//分布类其实就是相当于把一个类分成几部分申明而已 可以同时使用各个分布类的成员
//学生分布类1的变量
student1.name = "男";
//学生分布类2的变量
student1.number = 1;
分部方法
概念:将方法的申明和实现分离
特点:
- 不能加访问修饰符 默认私有
- 只能在分部类中申明
- 返回值只能是
void
- 可以有参数但不用
out
关键字
局限性大,了解即可
学生分布类1内
//Speak方法的申明
partial void Speak();
学生分布类2内
//Speak方法的实现
partial void Speak()
{
//实现逻辑
}
//Speak重载方法的实现
public void Speak(string str)
{
}
13.2 知识点代码
using System;
namespace Lesson11_封装_内部类和分部类
{
#region 知识回顾
class 类名
{
#region 特征——成员变量
#endregion
#region 行为——成员方法
#endregion
#region 初始化调用——构造函数
#endregion
#region 释放时调用——析构函数
#endregion
#region 保护成员变量——成员属性
#endregion
#region 像数组一样使用——索引器
#endregion
#region 类名点出使用——静态成员
#endregion
#region 自定义对象可计算——运算符重载
#endregion
}
#region 静态类和静态构造函数
#endregion
#region 拓展方法
#endregion
#endregion
//class语句块外 namespace语句块内
#region 知识点一 内部类
//概念
//在一个类中再申明一个类
//特点
//使用时要用包裹者点出自己
//作用
//亲密关系的变现
//注意
//访问修饰符作用很大
//实例
// 人 类
class Person
{
public int age;
public string name;
//身体 成员变量
public Body body;
// 内部 身体 类
public class Body
{
//胳膊 成员变量
Arm leftArm;
Arm rightArm;
//内部 胳膊 类
class Arm
{
}
}
}
#endregion
#region 知识点二 分部类
//概念
//把一个类分成几部分申明
//关键字
//partial
//作用
//分部描述一个类
//增加程序的拓展性
//注意
//分部类可以写在多个脚本文件中
//分部类的访问修饰符要一致
//分部类中不能有重复成员
//实例
//学生 分布类1
public partial class Student
{
public bool sex;
public string name;
//学生分布类1内
#region 知识点三 分部方法
//Speak方法的申明
partial void Speak();
#endregion
}
//学生 分布类2 访问修饰符要和学生分布类1一致是public
public partial class Student
{
public int number;
//public bool sex;//报错 分部类中不能有重复成员
//学生分布类2内
#region 知识点三 分部方法
//Speak方法的实现
partial void Speak()
{
//实现逻辑
}
//Speak重载方法的实现
public void Speak(string str)
{
}
#endregion
}
//可以写在多个脚本文件中 在实践中运用
#endregion
#region 知识点三 分部方法
//概念
//将方法的申明和实现分离
//特点
//1.不能加访问修饰符 默认私有
//2.只能在分部类中申明
//3.返回值只能是void
//4.可以有参数但不用 out关键字
//局限性大,了解即可
#endregion
class Program
{
static void Main(string[] args)
{
Console.WriteLine("内部类和分部类");
//主函数内
#region 知识点一 内部类
Person p = new Person();
//Body body = new Body();
//报错 内部类使用时要用包裹者点出自己
Person.Body body = new Person.Body();//正确用法
//Person.Body.Arm = new Person.Body.Arm();
//报错 胳膊类没有public 默认是私有 由于其保护级别而无法访问
#endregion
#region 知识点二 分部类
Student student1 = new Student();
//分布类其实就是相当于把一个类分成几部分申明而已 可以同时使用各个分布类的成员
//学生分布类1的变量
student1.name = "男";
//学生分布类2的变量
student1.number = 1;
#endregion
}
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com