初始继承和多态。

--继承
在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中当一个变量没有任何的修饰符修饰的时候,应用范围:
当前包中可用,跨包不可用。

原文地址:https://www.cnblogs.com/matianpeng/p/8279557.html