zoukankan      html  css  js  c++  java
  • C# VS 面向对象基础(一)

     面向对象(Object Oriented,OO)的相关知识学习了很多了,这篇博客我从C#实现面向对象的理论来做个初步的总结。 

        在这篇博客中,我通过一个例子讲述了,面向对象中,类,类的实例化,构造方法,方法重载,类的属性,封装和继承,这些概念的代码实现。首先我们再次了解这些名词的相关知识。

       :就是具有相同属性和功能的对象的集合。 

        构造方法:就是对类进行初始化。如果不编码则系统将默认生成空的构造方法。

        方法重载:提供了创建同名的多个方法的能力,但是这些方法需要有不同的参数类型。他可以在不改变原方法的基础上增加新功能。 

        属性:适合于以字段的方式使用方法调用的场合,这里字段是存储类要满足其设计所需要的数据。 

        封装:每个对象都包含他能进行操作的所有信息。封装可以减少耦合,类的内部可以修改,可以使类具有清晰的对外接口。 

        继承:如果子类继承父类,第一子类拥有父类非private的属性和功能;第二,子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能,还可以以自己的方式实现父类的功能(方法重写)。 

        下边我们看这个例子来对上边的知识点进行深一步理解:

     1 [csharp] view plaincopyprint?
     2 <span style="font-size:18px;">namespace WindowsFormsApplication3  
     3 {  
     4     public partial class Form1 : Form  
     5     {  
     6         public Form1()  
     7         {  
     8             InitializeComponent();  
     9         }  
    10   
    11         private void button1_Click(object sender, EventArgs e)//单击猫叫按钮的事件方法  
    12         {  
    13             Cat cat = new Cat("咪咪"); //类的实例化  
    14             cat.ShoutNum1 = 7;  
    15    
    16             MessageBox.Show(cat.shout());  
    17         }  
    18   
    19         private void button2_Click(object sender, EventArgs e) //单击狗叫的按钮的事件方法  
    20         {  
    21             Dog dog = new Dog("旺财");//这里只是简单的调用方法,即可实现目的,体现了封装的特性  
    22             dog.ShoutNum1 = 6;  
    23             MessageBox.Show(dog.shout());  
    24         }  
    25   
    26         
    27          
    28     }  
    29     class Animal//声明一个父类  
    30        
    31     {  
    32         protected string name = "";//声明类的的私有字符串变量name  
    33          
    34         public Animal(string name)//定义cat类的构造方法,参数是输入一个字符串  
    35         {  
    36             this.name = name;//将参数赋值给私有变量  
    37         }  
    38   
    39         public Animal()//将构造方法重载  
    40         {    
    41             this.name = "无名";  
    42         }  
    43   
    44         protected int shoutNum1 = 3;//声明一个内部字符段,默认值3,  
    45         public int ShoutNum1//属性的设置  
    46         {  
    47             get//get表示外界调用属性的值  
    48             {  
    49                 return shoutNum1;  
    50             }  
    51             set//set表示外界可以给属性的赋值  
    52             {  
    53                 shoutNum1= value;  
    54             }  
    55         }  
    56   
    57     }  
    58   
    59         class Cat : Animal//子类猫,使用了继承的机制,继承了Animal父类  
    60         {  
    61             public Cat(): base()  
    62             { }  
    63             public Cat(string name)  
    64                 : base(name)  
    65             { }  
    66             public string shout()  
    67             {  
    68                 string result = "";  
    69                 for (int i = 0; i < shoutNum1; i++)  
    70                 {  
    71                     result += "";  
    72                 }  
    73                 return "我的名字叫" + name + " " + result;  
    74             }  
    75           
    76         }  
    77         class Dog : Animal//子类狗,继承父类Animal  
    78         {  
    79             public Dog()  
    80                 : base()  
    81             { }  
    82             public Dog(string name)  
    83                 : base(name)  
    84             { }  
    85             public string shout()  
    86             {  
    87                 string result = "";  
    88                 for (int i = 0; i < shoutNum1; i++)  
    89                 {  
    90                     result += "";  
    91                 }  
    92                 return "我的名字叫" + name + " " + result;  
    93             }  
    94   
    95         }  
    96   
    97          
    98   
    99 }</span>  

     看里边的注释即非常清楚,下边我们看看输出的结果:

  • 相关阅读:
    「分块」学习笔记
    「NOIP 2017」逛公园
    大假期集训模拟赛15
    大假期集训模拟赛14
    大假期集训模拟赛13
    nginx 日志升级
    nginx 日志切割
    nginx 健康检查
    sftp 管理
    Prometheus 学习
  • 原文地址:https://www.cnblogs.com/SJP666/p/4754862.html
Copyright © 2011-2022 走看看