概述
P23、24、25类
一、P23、24、25内容总结
- 什么是类P23
- 构造器与析构器P23
- 类声明的全貌P24
- 最简单的类声明P24
- 类的继承P25
- 成员的继承与访问P25
- 面向对象的实现风格P25
二、什么是类–老师用例子将解释了一下
- 数据结构
- 数据类型(引用数据类型)
- 代表现实世界中的“种类”
三、构造器与析构器
- 实例
1)构造器
2)析构器
3)如何不用new操作符创建实例:使用反射、dynamic编程,老师举例说明,我没有记录了
//Student stu = new Student();
()调用默认构造器
class Program
{
static void Main(string[] args)
{
Student s1 = new Student(1, "Timothy");
s1.Report();
}
class Student
{
//Student 类的默认构造器
//很像一个方法,但是没有返回值类型
public Student(int id, string name)
{
this.ID = id;
this.Name = name;
}
//析构器:一般用于释放内存
//当程序完成时系统会自动调用析构器
//在Student类中声明一个析构器,模拟释放内存的操作
~Student()
{
Console.WriteLine("Bye!");
}
public int ID { get; set; }
public string Name { get; set; }
public void Report()
{
Console.WriteLine($"I'm {ID} student,my name is {Name}.");
}
}
}
- 静态:静态成员对类有意义
1)构造器
class Program
{
static void Main(string[] args)
{
Student s1 = new Student(1, "Timothy");
Student s2 = new Student(2, "Jacky");
Console.WriteLine(Student.Amount);
}
class Student
{
public static int Amount { get; set; }
//静态构造器:只能构造静态成员
static Student()
{
Amount = 100;
}
public Student(int id, string name)
{
this.ID = id;
this.Name = name;
Amount++;
}
~Student()
{
Amount--;
}
public int ID { get; set; }
public string Name { get; set; }
public void Report()
{
Console.WriteLine($"I'm {ID} student,my name is{Name}.");
}
}
}
四、类声明的全貌
- 一些术语:声明类;创建类实例/对象
- C#类声明的位置
1)在名称空间内声明类–最常用
2)在类体内声明类–成为了成员类
例:在Program类内声明了一个Student类,Student类就成为了Program类的成员类 - 声明与定义
1)C++中声明与定义是可合并也可分开的,定义:实现的功能
2)C#中声明与定义无法分开,声明即定义
五、最简单的类声明
- class(关键字) identifier(类名,所有单词首字母大写) class-body(类体) 这三个部分在声明中不可省
- 类的访问控制:
类的访问级别修饰符:public、internal
1)public:不仅类所处项目中可以访问此类,在类所处项目外的项目也可以访问此类
2)internal:只在类所处项目中可以访问此类,即internal这个类的访问级别为项目,默认为internal
//右键solution点击Add一个类库
//删除自动生成的class1
//右击MyLib项目Add一个Newfolder(新建文件夹)Mynamespace
//MynamespaceAdd一个Calculator类
//说明public修饰符例子
//Calculator.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyLib.Mynamespace
{
public class Calculator
{
public double Add(double a,double b)
{
return a + b;
}
}
}
//Program.cs
using System;
using MyLib.Mynamespace;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
Calculator calculator = new Calculator();
double res=calculator.Add(1.1, 2.2);
Console.WriteLine(res);
}
}
}
六、类的继承
- 继承的概念:子类在完整接收父类成员的基础上进行的横向或纵向的扩展
横向扩展:对类成员个数扩充
纵向扩展:对类成员的重写 - 一些术语:基类-派生类;父类-子类
- 实例:了解类继承的语法
//Vehicle 是基类
class Vehicle
{
}
//Car 是派生类
//Car类是从Vehicle类派生而来的
class Car :Vehicle
{
}
- ”是一个“ 概念, is a操作符
1)子类的一个实例,从语义上来说也是父类的一个实例;
2)派生类的一个实例,从语义上说也是基类的一个实例;
3)可以用is a 操作符对上述进行判断 结果为true - 注意:
1)我们可以用一个父类类型的变量引用一个子类类型的实例
Vehicle vehicle = new Car();
Object o1 = new Vehicle();
2)一个类最多只能有一个基类
3)子类的访问级别不能超过父类,只能低于或持平
4)sealed类不能被继承
七、成员的继承与访问
- 实例:详细说明类成员的访问级别–40分开始
- 成员访问原则
1)原则1:类成员的访问级别是基于类成员所在类的访问级别
若类的访问级别是internal,就算成员的访问级别为public在别的assemby内也不能调用
2) 原则2:private 将访问级别限制在类的类体里,默认成员的访问级别为private
3)原则3:protected 把类成员的访问级别限制在继承类上,可跨程序集,通常使用在方法上
即在父类当中有一个类成员使用protected修饰之后,所有的子类是可以访问这个成员,但是不在继承链上其他的类型是不能够访问这个级别的。
八、面向对象的实现风格
- C++ C# 基于类的 class-based
- Java prototype-based
最后
以上就是眼睛大自行车为你收集整理的2021-06-23-刘铁猛C#语言入门详解-学习笔记P23、24、25类的全部内容,希望文章能够帮你解决2021-06-23-刘铁猛C#语言入门详解-学习笔记P23、24、25类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复