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);
        }
    }
}
原文地址:https://www.cnblogs.com/jiangshuai52511/p/5069102.html