zoukankan      html  css  js  c++  java
  • C# 笔记2:面向对象

    22,一个疑问:

    函数和方法的区别是什么,联系是什么?
     
    答:c语言等语言里叫函数,面向对象编程,函数写到类里边就叫做方法,函数可以直接调用,对象中的方法一般都有指针this指向它,但是有时一些方法实在不需要写到类里边,所以面向对象的语言有了静态方法。
    (一般说是基本上没什么区别,是一样的东西)
     
    23,面向对象的概述:
    在面向对象过程中,算法与数据结构被看作是一个整体,称作对象。
    对象=算法+数据结构,程序=对象+对象+……
     
    面向对象的编程方式具有的特点:
    ①:封装;类是属性和方法的集合。
    ②:继承;
    ③:多态性;不同的类进行同一操作可以有不同的行为。
     
    24,关于类声明时常见的几个修饰符:
    new:仅允许在嵌套类声明时使用,表明类中隐藏了由基类中继承而来的、与基类中同名的成员。
    public:不限制对类的访问;
    protected:只能从其所在类和所在类的子类(派生类)进行访问;
    internal:只有其所在类才能访问;
    private:只有NET中的应用程序或库才能访问;
    abstract:抽象类,不允许建立类的实例;
    sealed:密封类,不允许被继承。
     
    25,构造函数和析构函数:
    ①对象 的生命周期从构造函数开始,以析构函数结束。如果一个类含有构造函数,在实例化该类的对象时就会调用,如果含有析构函数,则会在销毁对象时调用。构造函数的名字和类名相同,析构函数和构造函数的名字相同。但析构函数要在名字前加一个波浪号~。当退出含有该对象的成员时,析构函数将自动释放这个对象所占用的内存空间。
    ②一个类中只能有一个析构函数,并且无法调用析构函数,它是被自动调用的。
     
    26,类和对象的关系:
    类是一种抽象的数据类型,具相同,相似结构,操作和约束规则的对象组成的集合。
    对象是类的实例。
     
    27, 类的继承
    protected,只有子类(派生类)才能访问protected成员,基类和外部代码都不能访问protected成员。
    基类还可以定义为抽象类。抽象类不能直接实例化,要使用抽象类就必须继承这个类,然后再实例化。
     
    28,类的多态
    ①多态使得子类的实例可以直接赋予基类的变量(这里不需要进行强制类型转换),然后直接就可以通过这个变量调用子类的方法。
    ②C#中,类的多态性是通过在子类中重载基类的虚方法或函数成员来实现的。
    ③还可以使用新的派生成员替换基类的成员,这时需要使用new关键字。如果基类定义了一个新方法,字段或属性,则new关键字用于在子类中创建该方法,字段或属性的新定义。new关键字放置在要替换的类成员的返回类型之前。
     
    29,对于多态要注意的:
    ①virtual修饰符不能与private,static,abstract或者override修饰符同时使用;
    ②override修饰符不能与new static或者virtual修饰符同时使用,并且重写方法只能用于重写基类中 的虚方法。
    ③C#中,继承,虚方法和重写方法组合在一起才能实现多态性。
     
    30,有关接口
    ①类和结构可以像类继承基类或结构一样从接口继承,但是可以继承多个接口。
    ②当类和结构继承接口时,它继承成员定义但不继承实现。若要实现接口成员,类中的对应成员必须是公共的,非静态的,并且与接口成员具有相同的名称和签名。
     
    31,抽象类与抽象方法
    如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅仅是作为其派生类的一个类,这样的类就是抽象类,在抽象类中声明方法时,如果加上abstract关键字,则为抽象方法。
     
    32,抽象类
    抽象类主要用来提供多个派生类可共享的基类的公共定义,它与非抽象类的主要区别如下:
    □抽象类不能直接实例化;
    □抽象类中可以包含抽象成员,但非抽象类中不可以。
    □抽象类不能被密封。
    □抽象方法必须在抽象类中。
     
    33,抽象类和接口的区别:
    ①它们的派生类只能继承一个基类,即只能直接继承一个抽象类,但可以继承任意多个接口。
    ②抽象类中可以定义成员的实现,但接口中不可以;
    ③抽象类中可以包含字段、构造函数、析构函数、静态成员或者变量等,接口中不可以。
    ④抽象类中的成员可以是私有的、受保护的、内部的或者受保护的内部成员,但接口中的成员必须是公共的。
    □抽象类和接口这两种类型用于完全不同的目的。抽象类主要用作对象系列的基类,共享某些主要特性,例如共同的目的和结构。接口则主要用于类。
     
    34,
    在密封类中不能声明受保护成员或虚成员,因为受保护成员只能从派生类进行访问,而虚成员只能从派生类中重写。
    由于密封类的不可继承性,因此密封类不能声明为抽象的,即sealed修饰符不能与abstract修饰符同时使用。
  • 相关阅读:
    北邮OJ103.反转单词 c++/java
    北邮oj 104. 912星球的研究生
    北邮oj 97. 二叉排序树
    北邮OJ 89. 统计时间间隔 java版
    用欧几里得定理求最大公约数和最小公倍数
    shell执行${var:m:n}报错Bad substitution解决办法
    基于ffmpeg不同编码方式转码后的psnr对比
    ffmpeg使用ss与t参数对视频进行剪辑
    黑菜菌的JAVA学习笔记
    Linux服务器内存监控—每小时检查&超出发送邮件&重启占用最高的Java程式
  • 原文地址:https://www.cnblogs.com/yanhan/p/2730441.html
Copyright © 2011-2022 走看看