面向对象继承
我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员单独封装到一个类中,作为这些类的父类
子类继承了父类的属性和方法,但是子类没有继承父类的私有字段,子类并没有继承父类的构造函数,子类会默认的调用父类无参数的构造函数,创建父类对象,让子类可以使用父类中的成员,所以,如果在父类中重写一个有参数的构造函数,无参数的就没有了,子类调用不到,就会报错
解决方法:1.在父类中重写一个无参数的构造函数
2.在子类中显示的调用父类的构造函数,使用关键字:base()
继承的两个特性
继承的单根性(只能有一个父类)
继承的传递性(Persong–Student–Programmer)
查看类图
右键视图里面
里氏转换
子类可以赋值给父类
如果父类中装的是子类对象,那么可以将这个父类强转为子类的对象
复习
类可以包含
-
字段
- 作用:存储数据
-
属性
- 作用:保护字段,对字段的取值和设值进行限定
-
方法
- 作用:描述对象的行为
-
构造函数
- 作用:初始化对象(给对象的每个属性依次赋值)当调用这个构造函数是可以传入一些参数
- 特点:1.没有返回值 连void也没有 2.构造函数的名称和类名一样
值类型和引用类型
-
值类型和引用类型在内存上存储的地方不一样
- 值类型是存储在内存的栈当中
- 引用类型的值是存储在堆中
-
传递这两种类型的方式不一样
命名空间
- 作用:用于解决类的重名问题,可以看作是类的文件夹
其他
类中的成员,如果不加访问修饰符,默认都是private
this关键字的作用
- 当前类的对象
- 显示调用自己的构造函数
new关键字
- 1.在内存中开辟一块空间
- 2.在开辟的空间中创建对象
- 3.调用对象的构造函数
- 4.隐藏从父类那里继承的成员
字符串
-
字符串的不可变性
- 当你给一个字符串重新赋值之后,之前的值并没有销毁,而是重新开辟一块空间给新值
-
可以将string类型看作是char类型的只读数组
- 可以通过下标访问字符串中的某一个元素
-
字符串的各种方法
-
Length获得当前字符串中字符的个数
-
ToUpper()将字符串转换成大写
-
ToLower()将字符串转换成小写
-
Equals(str2,StringComparison.OrdinalIgnoreCase)比较两个字符串忽略大小写
-
Splite()分割字符串
string s=“a b dfd_ + = , fdf”;
//分割字符串Split
char[] chs={’ ‘,’_’,’+’,’=’,’,’};
string[] str=s.Split
(chs,StringSplitOptions.RemoveEmptyEntries); -
Contains ( )判断字符串中是否包含
-
Replace()替换
-
Substring()截取字符串(从指定的索引截取到最后)
-
StartsWith()判断以……开始
-
EndsWith()判断以……结束
-
IndexOf()判断某一个字符串第一次出现的位置
-
LastIndexOf()判断某一个字符串最后一次出现的位置
-
集合
集合的好处:长度可以任意改变 类型随便
ArrayList
- Add()添加单个元素
- AddRange()添加集合元素
- Clear()删除所有元素
- Remove()删除单个元素
- RemoveAt()根据下标删除元素
- RemoveRange()根据索引删除一定范围的元素
- Sort()升序排列
- Insert()插入
- InsertRange()在指定索引处插入集合
- Contains()是否包含指定的元素
Hashtable
- 键值对集合中键是唯一的,值可以是重复的
- Contains()是否包含某个键
- Clear()清空所有元素
- Add()添加元素
- Remove()移除集合中的元素
is和as判断能不能进行转换
is:如果能够转换成功,返回一个true,否则返回一个false
as:如果能够进行转换则返回对应的对象,否则返回一个null
XMind - Trial Version