• 初始继承和多态。


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

  • 相关阅读:
    javascript设计模式(一)职责链模式China of responsibility
    javascript设计模式(一)策略模式Strategy
    angularjs提示消息弹出框
    Javascript设计模式(一)States
    Javascript设计模式(一)Facade
    NOIP2020
    RMQ & ST表
    NOI Linux
    初赛解析
    贪心大解析
  • 原文地址:https://www.cnblogs.com/matianpeng/p/8279557.html
Copyright © 2020-2023  润新知