子类这么定义:
class Employee:Person{
}
(2)base关键字
和java中的supper关键字用法一致
(3)类的成员类型
局部变量:在for、switch等语句中和类方法中定义的变量,只在指定范围内有效。
字段:即类中的变量或常量,包括静态字段、实例字段、常量和只读字段。
方法成员:包括静态方法和实例方法。
属性:按属性指定的get方法和Set方法对字段进行读写。属性本质上是方法。
事件:代表事件本身,同时联系事件和事件处理函数。
索引指示器:允许象使用数组那样访问类中的数据成员。
操作符重载:采用重载操作符的方法定义类中特有的操作。
构造函数和析构函数。
(4)修饰符
c#的类修饰符和java的比较
C# java
private 只能本类访问 只能本类访问
protected 本类,派生类 本类,子类,同包
public 外部程序 本程序
internal 本程序 类似于java的public
(5)字段和属性
字段:变量或者常量
属性:带有get,set的方法(与java的不同,java带有set,get方法的成员变量叫属性,我此处理解的可能有误)
(6)
静态字段:用static声明的字段,和java中的静态变量相同
实例字段:普通的变量,和java中的成员变量相同
常量:使用const修饰声明的常量,和java中的static final 修饰的用法相同
只读字段:使用readonly修饰声明的字段,它只能在字段声明中赋值或者在构造函数中赋值,java中没有对应的定义。
(7)C#中的属性
属性不是字段,但必然和类中的某个或某些字段相联系,属性定义了得到和修改相联系的字段的方法。
C#中的属性更充分地体现了对象的封装性:不直接操作类的数据内容,而是通过访问器进行访问,
借助于get和set方法对属性的值进行读写。访问属性值的语法形式和访问一个变量基本一样,
使访问属性就象访问变量一样方便,符合习惯。
在类的基本概念一节中,定义一个描述个人情况的类Person,其中字段name和age是私有字段,记录姓名和年龄,
外部通过公有方法SetName和SetAge修改这两个私有字段。现在用属性来描述姓名和年龄。例子如下:
using System;
public class Person
{ private string P_name="张三";//P_name是私有字段
private int P_age=12;//P_age是私有字段
public void Display()//类的方法声明,显示姓名和年龄
{ Console.WriteLine("姓名:{0},年龄:{1}",P_name,P_age);
}
public string Name//定义属性Name
{ get
{ return P_name;}
set
{ P_name=value;}
}
public int Age//定义属性Age
{ get
{ return P_age;}
set
{ P_age=value;}
}
}
public class Test
{ public static void Main()
{ Person OnePerson= new Person();
OnePerson.Name="田七";//value="田七",通过set方法修改变量P_Name
string s=OnePerson.Name;//通过get方法得到变量P_Name值
OnePerson.Age=20;//通过定义属性,既保证了姓名和年龄按指定方法修改
int x=OnePerson.Age;//语法形式和修改、得到一个变量基本一致,符合习惯
OnePerson.Display();
}
}
在属性的访问声明中,只有set访问器表明属性的值只能进行设置而不能读出,只有get访问器表明属性的值是只读的不能改写,
同时具有set访问器和get访问器表明属性的值的读写都是允许的。
虽然属性和字段的语法比较类似,但由于属性本质上是方法,因此不能把属性当做变量那样使用,也不能把属性作为引用型参数或输出参数来进行传递。
6.方法参数的种类
c#的参数类型比较多,比javav的复杂好多
-- 方法修饰符包括new、public、protected、internal、private、static、virtual、sealed、override、abstract和extern
-- C#语言的方法可以使用如下四种参数(请注意和参数类型的区别):
值参数,不含任何修饰符。
引用参数,以ref修饰符声明。
输出参数,以out修饰符声明。
数组参数,以params修饰符声明。
1.值参数
(1)当用值参数向方法传递参数时,程序给实参的值做一份拷贝,并且将此拷贝传递给该方法,被调用的方法不会修改实参的值,
所以使用值参数时,可以保证实参的值是安全的。
(2)如果参数类型是引用类型,例如是类的引用变量,则拷贝中存储的也是
对象的引用,所以拷贝和实参引用同一个对象,通过这个拷贝,可以修改实参所引用的对象中的数据成员。
值参数和java中的参数传递一致。
2.引用参数
有时在方法中,需要修改或得到方法外部的变量值,C语言用向方法传递实参指针来达到目的,C#语言用引用参数。
当用引用参数向方法传递实参时,程序将把实参的引用,即实参在内存中的地址传递给方法,方法通过实参的引用,
修改或得到方法外部的变量值。引用参数以ref修饰符声明。注意在使用前,实参变量要求必须被设置初始值。
这个类似于C语言中传递地址,然后根据地址找到相应的内存空间,并可以修改这个内存空间的值。
3. 输出参数
为了把方法的运算结果保存到外部变量,因此需要知道外部变量的引用(地址)。输出参数用于向方法传递外部变量引用(地址),
所以输出参数也是引用参数,与引用参数的差别在于调用方法前无需对变量进行初始化。在方法返回后,传递的变量被认为经过了初始化。
这个也类似于c语言中实现多个返回值的实现方式,区别是初始化问题,当然java也可以实现引用的修改,但是对于基本数据
类型做不到,只能用基本数据类型的