> 文章列表 > C# 重载、面向对象基础、继承、

C# 重载、面向对象基础、继承、

C# 重载、面向对象基础、继承、

重载:函数名 与 参数个数相同,参数类型不同。与返回值无关

多个项目的互相引用:右键引用,选择你需要引用的项目,代码中 应在上方导入(using)引用的项目的命名空间(namespace 后面的是需要导入)

创建类

右键项目 --> 添加 --> 类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{// 非静态internal class Class1{// 构造函数(必须是公开的,否则无法初始化)public Class1(string name, int age, char gender){Console.WriteLine("初始化");// this代表当前的对象this.Name = name;this.Age = age;this.Gender = gender;}public Class1(string name):this(name,0,'女'){// 初始化函数 重载(为了应对不同数据类似)// :this(name,0,'女') 实际调用的上面的初始化函数// 因为只有1个参数,所以后面随便给个默认值}// 析构函数~Class1(){Console.WriteLine("析构函数,用来帮助释放资源,一般不用");}// 静态 使用类名调用 (不能实例化,无法创建对象)// (静态函数只能访问静态成员,内部只能使用静态)// 动态 使用对象调用// 添加字段(也可以是静态的--前面加static)// get 读 set写  string _name;public string Name{get { return _name; }set { _name = value; }}// 私有 private 默认就是私有int _age;public int Age{get { return _age; }// 对年龄进行过滤判断set { if (value < 0 || value > 100){value = 0;}_age = value; }}char _gender;public char Gender{// 如果没有 默认 是男get { if (_gender != '男' && _gender != '女'){return _gender = '男';}return _gender;}set { _gender = value; }}public void CHLSS(){// 三种方法 建议第1种  Console.WriteLine("我叫{0},我今年{1}岁,性别{2}", this.Name, Age, _gender);}}
}

主函数调用类

using System.ComponentModel;
using System.Xml.Linq;namespace ConsoleApp1
{internal class Program{static void Main(string[] args){// 实例化Class1 p1 = new Class1("张二");// 修改p1.Name = "张三";p1.Age = 10;p1.Gender = '男';// 实例函数可以使用静态也可以使用非静态// 调用方法(非静态调用--对象.) p1.CHLSS();// 静态调用--类名,}}
}

继承

类继承示例:Class1:Class2 查看继承的关系:右键项目–>视图–>查看类图
构造函数继承:在本类的构造函数后加 :base(父类构造函数的参数)
覆盖父类方法:在子类方法(函数)前面加上 new
继承特性:
1.单根性:只能继承1个父类
2.传递性:可以套娃
protected 受保护的,只能在当前类已经子类中访问
class 前面修饰的:internal、public 、(部分类 partial 两个同名类 都是这个类的组成部分)、(密封类 sealed 不可被继承,可以继承别人)
修饰字段:internal、protected 、protected internal

using System.ComponentModel;
using System.Xml.Linq;namespace ConsoleApp1
{internal class Class1{static void Main(string[] args){// 实例化Reporter p1 = new Reporter("张二", 30, '男', "记者");// 实例函数可以使用静态也可以使用非静态// 调用方法(非静态调用--对象.) p1.ReporterSayHello();// 静态调用--类名,}}// 人类 基础类public class Person{private string _name;public string Name{get { return _name; }set { _name = value; }}private int _age;public int Age{get { return _age; }set { _age = value; }}private char _gender;public char Gender{get { return _gender; }set { _gender = value; }}// 构造函数public Person(string name, int age, char gender){this.Name = name;this.Age = age;this.Gender = gender;}}// 派生类 // 记者public class Reporter : Person{// 继承 父类 构造函数public Reporter(string name, int age, char gender, string Hobby) : base(name, age, gender){this.Hobby = Hobby;}private string _hobby;public string Hobby{get { return _hobby; }set { _hobby = value; }}public void ReporterSayHello(){Console.WriteLine("姓名:{0},年龄{1},性别{2},我的职业{3}",this.Name, this.Age, this.Gender, this.Hobby);}}
}