zoukankan      html  css  js  c++  java
  • c#面向对象基础 封装、继承

    一、封装

      这是一种隐藏的特性。可以用一个公式来展示类的封装特性:

      封装的类=数据  +  对此数据进行的操作(即算法)

      通俗的说,封装就是:包起外界不必要知道的东西,只向外界展露可供展示的东西。

      在面向对象理论中,封装这个概念拥有更为宽广的含义。小到一个简单的数据结构,大到一个完成的软件子系统,静态的如某个软件系统要收集数据信息项,动态的如某个工作处理的流程,都可以封装到一个类中。

      封装:就是将成员变量设为private私有的,然后为其封装出一个属性
                  属性是具有get和set两个函数的读取写入器,能够为成员赋值取值做数据传递

     

    二、继承:

      继承是面向对象编程最重要的特性之—。任何类都可以从另—个类继承,这就是说,这个类拥有它继承的类的所有成员。在面向对象编程中,被继承(也称为派生)的类称为父类(也称为基类)。注意C#中的对象仅能派生于一个基类。

      在继承一个基类时,成员的可访问性就成为一个重要的问题。派生类不能访问基类的私有成员,但可以访问其公共成员。不过,派生类和外部的代码都可以访问公共成员。这就是说,只使用这两个可访问性,不仅可以让一个成员被基类和派生类访问,而且也能够被外部的代码访问。为了解决这个问题,C#提供了第三种可访问性:protected,只有派生类才能访问protected成员

      除了成员的保护级别外,我们还可以为成员定义其继承行为。基类的成员可以足虚拟的,也就是说,成员可以由继承它的类重写。派生类可以提供成员的 其他执行代码。这种执行代码不会删除原来的代码,仍可以在类中访问原来的代码,但外部代码不能访问它们。如果没有提供其他执行方式,外部代码就访问基类中 成员的执行代码。虚拟成员不能是私有成员。

    类与类之间的关系:父子关系子类继承父类,一个类只能继承一个父类

    当子类继承父类之后就拥有了父类的公共属性和方法

    子类对象可以直接转换为父类类型,但父类对象不能直接转换为子类类型

    当某个父类对象是通过子类对象转换来的时候,通过父类类型不能点出来子类的属性和方法,只有当从某个子类对象转换来的父类对象,才能再转换回去

    对象的等号赋值,实际赋值的是指向
    Class1 c = new Class1();
    Class1 d = c; 那么d和c是一个东西。

     

    类的修饰符:    

        public  : 跨程序集,命名空间,必须要using引用
        internal:默认,自己当前命名空间范围成员的修饰符:
        private:私有的,只能当前类
        protected:受保护的,当前类以及子类
        public :公共的,跨程序集
        internal:当前命名空间,但是随着类的范围而定,当我们设置类为public之后,那么internal的成员,也随之可以在其他命名空间访问

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace jicheng
    {
        class Program
        {
            static void Main(string[] args)
            {
                Class1 c=new Class1();
                c.name = "你好!";//在name用internal修饰后,也能点出name,因为类用public修饰
                c.printname();
               
                Console.ReadLine();
            }
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace jicheng
    {
        public class Class1  //当类设置成public后
        {
            internal string name;//internal的成员也随之在其他的命名空间访问
    
            public void printname()
            {
                Console.WriteLine(name);
            }
        }
    }
    
  • 相关阅读:
    多个tab切换demo
    react添加和删除定时器的地方
    编写C语言的两种方法----Visual Studio/CodeBlocks
    C++学习笔记---引用的本质
    C++学习笔记---指针
    C++学习笔记---数据类型
    博客园皮肤SimpleMemory深色风格皮肤
    SQL DELETE语句如何让表使用别名的方法
    Asp.Net实现局部刷新,ScriptManager和UpdatePanel控件的使用
    由于可能不会将凭据发送到远程计算机,因此将不会进行连接。若要获得协助,请与您的系统管理员联系。(转)
  • 原文地址:https://www.cnblogs.com/jiangshuai52511/p/5069102.html
Copyright © 2011-2022 走看看