一、封装

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

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

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

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

  封装:就是将成员变量设为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);
}
}
}

最新文章

  1. Android欢迎界面
  2. jQuery 正则选择器
  3. linux bash & profile &bash_profile 小结
  4. 第二章TP-Link 703N OpenWrt刷回原厂固件
  5. Tomcat启动报错:严重: StandardServer.await: create[8005] java.net.BindException: Cannot assign requested address
  6. OpenVPN莫名其妙断线的问题及其解决-confirm
  7. ios 基于CAEmitterLayer的雪花,烟花,火焰,爱心等效果demo(转)
  8. angularjs——工具方法
  9. c# 颜色RGB到HSB互相转换
  10. Spring Boot 2.x整合Redis
  11. python maximum recursion depth exceeded 处理办法
  12. 浅谈Python闭包
  13. 【SVN技巧】如何协同开发LabVIEW代码 1
  14. ActiveReports 区域报表中的事件介绍
  15. 我为什么放弃使用mybatis3的mapper注解了
  16. docker仓库--使用tenxcloud
  17. win10 安装 mysql 5.7
  18. ES6的新特性(9)——对象的扩展
  19. 兼容python3的SSDB客户端
  20. 浅谈js模块加载方式(初级)

热门文章

  1. 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
  2. fprintf, fscanf,printf,scanf使用时参数注意
  3. 通过PHP扩展phpredis操作redis
  4. windows下配置python库
  5. java的几种连接池
  6. Swift3.0语言教程使用路径字符串
  7. Bestcoder round #65 && hdu 5592 ZYB's Premutation 线段树
  8. Only Link: Reading links for button/a etc
  9. BZOJ4118 : [Wf2015]Window Manager
  10. php访问url的四种方式