C#_面对对象

什么是面对对象

在c#学习过程中很多人会发现面对对象很抽象,所以为了更的理解我将举一些例子。
面对对象中的对象一般是具体的事物。
面对对象要的是结果。如:我打开门,打开的过程是面对过程,过程可以是多样的,如可以用脚踢,用手开。但结果都是门被打开,而面向对象就是这个门被打开的结果。对象抽象出类
类的属性
类的属性可以理解为对象的特征,如门的颜色,门的形状,等。
类的方法
类的方法可以理解为对象的行为,如:门能被打开
下面代码可以帮助理解

using System
namespace duiXiang
{
    
    
 class DX
  {
    
    
  static void Main(string[] args)
  {
    
    
    student st=new student();     //创建对象
    st.name="张三";                 //声明函数
    st.age=18;
    st.behaviour();
    Console.ReadKey();
  }
  }
   class student    //类的名
  {
    
    
   public string name;     // 类的属性
   public int age;  
   pubilc void  behaviour()  //类的方法即对象的行为    
   {
    
    
   Console.WriteLine("{0}的年龄为{1},行为是学习"this.name,this.age);
   }    
  }
}

结果是:

张三的年龄为18,行为是学习

面对对象的三大特征

1.继承

继承的特性
1.单根性:一个子类只能有一个父类。
2.传递性:可以进行代际传递。如子类的子类可以继承子类的属性也可以使用父类的属性。

基类(父类)和派生类(子类):基、派生类可以继承(也可以理解成使用)基类的数据和函数。派生类也可以有自己的数据。
基类的初始化:应该先建立父类(基类)再创建子类(派生类)。可以在在成员初始化列表中进行父类的初始化,即在基类的主体中初始化。
在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承 Person 类。但是 Leg 类却不能继承 Person 类,因为腿并不是一个人。

using System;
namespace InheritanceApplication
{
    
    
   class Shape
   {
    
    
      public void setWidth(int w)
      {
    
    
         width = w;
      }
      public void setHeight(int h)
      {
    
    
         height = h;
      }
      protected int width;
      protected int height;
   }

   // 派生类(子类)
   class Rectangle: Shape
   {
    
    
      public int getArea()
      {
    
    
         return (width * height);
      }
   }
   
  class RectangleTester  //基类(父类)
   {
    
    
      static void Main(string[] args)
      {
    
    
         Rectangle Rect = new Rectangle();
         Rect.setWidth(5);
         Rect.setHeight(7);
         // 打印对象的面积
         Console.WriteLine("总面积: {0}",           Rect.getArea());
         Console.ReadKey();
      }
   }
}

结果是:

总面积:35

注:new关键字 1.是可以创建对象 2.是可以隐藏父类
子类没有继承父类的构造函数。但子类默认调用父类无参的构 造函数

里式转换:子类可以赋值给父类
创建一个子类的对象

  child c=new child();    
  father f=c;new child();   

父类可以继承子类的值。
如果一个父类装的子类的对象可以将父类强转为子类

child cc=(child)f;

cc.子类的名;

2.封装

可以用public,private,protected,internal,protected internal
等关键字来封装

public:所有对象都可以访问;
private:对象本身在对象内部可以访问;
protected:只有该类对象及其子类对象可以访问
internal:同一个程序集的对象可以访问;
protected internal:访问限于当前程序集或派生自包含类的类型

get,set可以对关键字进行封装,get,set分别对应可读,可写。

3.多态

多态性指的是同一个事件在不同对象上会有不同结果。例如面对一件事不同的人有不同的处理结果。
静态多态性。
函数的响应是在编译时发生的,也可以理解为在编译时,函数和对象的连接机制被称为早期绑定,也被称为静态绑定。
函数重载。
您可以在同一个范围内对相同的函数名有多个定义。函数的定义必须彼此不同,可以是参数列表中的参数类型不同,也可以是参数个数不同。不能重载只有返回类型不同的函数声明。
实例:

using System;
namespace PolymorphismApplication
{
    
    
    public class TestData  
    {
    
      
        public int Add(int a, int b, int c)  
        {
    
      
            return a + b + c;  
        }  
        public int Add(int a, int b)  
        {
    
      
            return a + b;  
        }  
    }  
    class Program  
    {
    
      
        static void Main(string[] args)  
        {
    
      
            TestData dataClass = new TestData();
            int add1 = dataClass.Add(1, 2);  
            int add2 = dataClass.Add(1, 2, 3);

            Console.WriteLine("add1 :" + add1);
            Console.WriteLine("add2 :" + add2);  
        }  
    }  
}

动态多态性

可以使用关键字 abstract 创建抽象类,用于提供接口的部分类的实现。 当一个派生类继承自该抽象类时,实现即完成。
抽象类包含抽象方法,抽象方法可被派生类实现。派生类具有更专业的功能。

猜你喜欢

转载自blog.csdn.net/AD_GOD/article/details/121711104
今日推荐