构造函数:
构造函数 - 创建一个类的函数
每一个类都有构造函数,访问修饰符必须是public的,并且不需要写任何返回值,方法名与类名一致
自己写的类 - 用户自定义类型
如果要使用自定义类型产生出来的 对象 必须有一个实例化的过程
实例化格式:
类型名 ss = new 构造函数();
访问修饰符 - 4个
public - 公共的,任何地方都可以访问,但是需要引用 命名空间
private - 私有的,类的内部才可以访问
internal - 内部的,默认的,程序集中可以访问,程序集就是命名空间
protected - 被保护的,类的内部和类的父类和子类中可以访问
封装:
private 数据类型 _名字; --成员变量
public 默认一致 名字 --属性
{
get{ return _名字; }
set{ _名字 = value; }
}
封装可以保护数据的安全性
自己关于封装的练习:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 封装 { class Student { public Student() { } private string _Code;//学号 public string Code { get { return _Code; } set { _Code = value; } } private string _Name;//姓名 public string Name { get { return _Name; } set { _Name = value; } } private string _Sex;//性别 public string Sex { get { return _Sex; } set { _Sex = value; } } private int _Age;//年龄 public string Age//判断输入年龄是否为整数 { set { try { _Age = int.Parse(value); } catch { _Age = 0; } } } public int Age1 { get { return _Age; } } } }
类中不仅可以有成员变量和属性,还可以有成员方法
方法又分为,普通方法 静态方法
普通方法使用: 需要实例化对象,用对象点出来
静态方法使用: 直接用类名点出来,不需要实例化对象,只需在访问修饰符后面加上static
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace aaaaa { public class jisuan { /// <summary> /// 计算两个数的加法,返回和 /// </summary> /// <param name="a">要计算的第一个数</param> /// <param name="b">要计算的第二个数</param> /// <returns></returns> public int jiafa(int a, int b) //成员方法 { return a + b; } public static int jianfa(int a, int b) { return a - b; } } }
继承:
继承语法: 类名 : 父类名(在类名后面直接写冒号与想要继承的父类名)
子类也叫做xxx的派生类,超类
父类也叫做基类
一个父类可以有无数个子类
一个子类可以有1个父类
子类并不是可以继承父类中所有的东西,而是可以继承父类中允许子类继承的内容,这个允许条件是依靠访问修饰符来做的权限