6月28日课堂笔记(c#)
静态与静态
1,静态成员有static修饰符修饰
2,得到静态的字段 类名.字段名
3,public static int num;此时num值为0
4,静态构造方法必须无参数
静态类
静态类不能被继承,不能被实例化
静态成员是公有的
何时使用静态
在实例中使用静态
在程序中反复使用的类,可以写成静态的
工厂
工厂的特征就是根据需求生产(对象)
1生产的这个东西是干嘛用的
2由于生产的东西不同,需要统一调用的问题
生产就是为了计算,就是为了调用计算的方法
考虑返回值都应该有计算的方法
父类,规定了计算的方法,可以实现多态
接口
接口的存在就是为了实现多态
接口的定义
interface 接口名
{
接口成员
}
接口成员 :方法 属性 索引 事件声明
方法:只写返回类型 方法名(参数列表)
abstract class 类名:接口名
{
和抽象类的使用一样,必须实现这个接口中的方法,与正常方法一样写
public abstract string 方法名()
{
方法体
}
}
保证实现接口的类中有接口定义的方法即可
如果这个类是抽象类,那么可以将接口中的方法实现,也可以将其作为一个抽象的方法
接口实现多态的前提 继承和方法名相同
接口和抽象类的区别,接口是多继承,抽象类是单继承
接口中属性的定义 属性的本质就是方法
接口中的属性具有只读和只写的区分
interfacce IProperity
{
int num
{
set;
get;
}
}
=-------------------------------------
class Base
{
}
interface IF
{
}
class Sub:Base,IF
{
}
Base b1=new Sub();
IF f1=b1 as IF;如果b1可以转化为F1,就转化,并将转化后的结果赋值给左边。如果转化不了,就得到一个null。
显示实现接口
接口可以实现多继承,一个成员可以继承多个接口
interface If1
{
func();
}
interface If2
{
func();
}
class Myclass:If1,If2
{
void If1.func()
{
Console.WriteLine();
}
void If2.func()
{
Console.WriteLine();
}
}
显示实现接口,语法
返回类型 接口名.方法名
{
方法体
}
可以知道显示实现接口方法没有修饰访问福
显示实现接口只能通过接口进行调用
Mycalss m1=new Myclass();
IF1 f1=m1;
f1.func();
Mycalss m2=new Myclass();
IF2 f2=m2;
f2.func();
=====================
值类型和引用类型 class MyPoint
{
public int x;
public int y;
}
MAin {
MyPoint m1=new MyPoint();
m1.x=100;
m1.Y=200;
Mypoint m2=m1;
m1.x=1;
m1.y=2;
}
-------------------------
struct MyPoint
{
public int x;
public int y;
}
MAin {
MyPoint m1=new MyPoint();
m1.x=100;
m1.Y=200;
Mypoint m2=m1;
m1.x=1;
m1.y=2;
}
值类型来源于 valueType 引用类型来源于object
装箱与拆箱
int num=10;
object o=num; 装箱
int num1=(int)o; 拆箱
引用传递与值传递
ref 使用前必须要赋值,在方法中可以不为其赋值 out 在方法中赋值
将任意类型数据转换成字符串 tostring
Parse TryParse(很强大)
try catch
try catch finally表示无论如何在结束异常结构时都会执行其代码,销毁资源链接
try finally(用法比较特殊) 注:finally无论怎样都是会执行的,即使try过程中没有异常,finally中不能有return