--继承
在C#中类可以继承自另一个类
衍生的类(子类)继承父类的方法和数据成员
子类继承父类,父类派生子类,父类又叫基类,子类又叫派生类
//父类Employee public class Employee(){ public string ID{get;set;}//工号 public int Age{get;set;}//年龄 public string Name{get;set} //名称 public Gender Gender{get;set} } //PM类:项目经理 public class PM:Employee { private int yearOffExperience; public int YearOffExperience { get{return yearOffExperience;} set{yearOffExperience = value;} } public PM(){} public PM(string id ,string name,int age ,Gender gender,int yearOffExperience) { this.ID=id; this.Name=name; this.Age=age; this.Gender=gender; this.YearOffExperience=yearOffExperience } public string SayHi() { string message; message=string.Format("大家好,我是{0},今年{1}岁,项目管理经验{2}年", this.Name,this.Age,this.YearOffExperience); return message; } } //SE类:员工类 public calss SE:Employee { private int popularity; public int Popularity{ get{return Popularity;} set{Popularity= value;} } public SE(){} public SE(string id ,string name,int age ,Gender gender,int Popularity) ) { this.ID=id; this.Name=name; this.Age=age; this.Gender=gender; this.Popularity=Popularity} public string SayHi() { string message; message=string.Format("大家好,我是{0},今年{1}岁,项目管理经验{2}年", this.Name,this.Age,this.popularity); return message; } } //测试类Main()方法 static void Main (string [] arge) { //实例化一个SE的对象 SE engineer=new SE("112","爱变成",25,Gender.male,100); Console.WriteLine(engineer.SayHi()); //实例化一个PM的对象 PM pm=new PM ("142","爱代码",25,Gender.male,100); Console.WriteLine(pm.SayHi()); Console.ReadLine(); }
public 子类继承并可以访问,private 子类无法访问
protected 访问修饰符只允许继承它的子类访问
关键字base :base.父类属性,base.父类的方法(),:base() 隐式调用父类构造函数
子类构造的过程
.Main----->子类构造名字,不执行构造体
2.跳转到父类构造,并且执行父类构造体
3.父类构造执行完毕(变相就是创建父类对象),跳转到子类构造体执行。
4.子类构造体执行完毕,控制权转交给Main
5.Main函数中创建子类对象
如果父类没有无参的构造函数,子类构造函数必须指明调用父类哪个构造函数
is a
is:操作符
符合is a关系的两个类之间,可以使用继承
虚方法:
定义的目的:为了子类同名 重新实现
C#
类内部 子类 其他类
public 可以 可以 可以
private 可以 不可以 不可以
protected 可以 可以 不可以
internal 当前程序集
子类 子类的对象=new 子类();
在子类的内部一定有一个父类.
throw new Exception("亲,除数不能为0啊!)
抛出异常
---多态:
1.不同对象对于同一个方法实现不同的行为,可以有不同的解释,产生不同的执行结果。
2.同一类在不同场合下表现出不同的行为特征
虚方法:
访问修饰符 virtual 返回值类型 方法名(){
//方法体
}
方法重写:
访问修饰符 override 返回值类型 方法名(){
//方法体
}
父类中定义的虚方法并非必须被子类重写,在父类中可给出虚方法的默认实现,如果子类不重写父类的虚方法,依然执行父类的默认实现,反之,则执行子类重写后的方法
JAVA
public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不
仅可以跨类访问,而且允许跨包(package)访问。
private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以
及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、
属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
default:即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访
问。
?
Java中当一个变量没有任何的修饰符修饰的时候,应用范围:
当前包中可用,跨包不可用。