• 面向对象基础


    类和实例
    一切事物皆为对象,准确来说:对象是一个自包含的实体,用一组刻识别的特性和行为来标识。
    类是具有相同的属性和功能的对象的抽象的集合。
     
    构造函数:
    所有类都有构造函数,如果你没有编码则系统默认生成空的构造方法,若你有定义的构造方法,那么默认的构造方法就是失效。
    方法重载:
    方法重载提供了创建同名的多个方法的能力,但这些方法需要使用不同的参数类型。
    封装
    定义:每个对象都包含它能进行的操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作。
    好处:良好的封装能减少耦合,类内部的实现可以自由的修改,类具有清晰的对外的接口
     
    继承
    定义:对象的继承代表一种 “is-a” 的关系 ,如果两个对象A和B,可以描述为B是A,则表明B可以继承A,
               继承者还可以理解为是对被继承者的特殊化,因为它除了具备继承者的特性外,还具备自己的有的个性
     
    继承定义了类如何相互关联、共享特性,继承的工作方式:定义父类和子类,或者说基类和派生类,其中子类继承了父类的所有特性,
    子类不但继承了父类的所有特性,还可以定义新的特性
    1:如果子类继承于父类,那么子类可以继承父类所有非private 的属性和功能    ;
    2:子类具有自己独有的属性和功能,即子类可以扩展父类没有的属性和功能
    3:子类可以一自己的方式实现父类的功能
     
    子类从它的父类中可以继承的有:方法、属性、事件、索引器、域,但对于构造函数只能调用不能继承,对于调用父类的成员,可以用Base关键字
     
    public Cat (string name)  :  base(name)
    { }
     
    缺点:父类变子类不得不变,继承会破坏封装,父类实现细节暴露给子类
     
    多态
    多态表示不同的对象可以有相同的动作,但是要通过自己的实现代码来执行
    注意:
    1:子类以父类的身份出现
    2:子类在工作时以自己的方式来执行
    3:子类以父类的身份出现时,子类特有的属性和方法不能使用
     
    为了让子类的实例完全替换来自父类的类成员,父类必须将该成员申明为虚拟的,即在返回类型前添加 virtual 关键字
    通常除了字段不能虚拟外,属性、事件、索引器都能虚拟,虚拟方法可以有自己的方法体
    子类将父类的实现用自己的实现替换,需要加Override关键字
     
    抽象类
    关键字:abstract
    1:抽象类不能实例化
    2:抽象方法是必须被子类实现的方法
    3:如果类中包含抽象方法,必须申明为抽象类,即使类中包含了一般方法
     
    应考虑让抽象类尽可能拥有更多的共同代码,拥有尽可能少的数据
     
    抽象类代表一个抽象概念,它是一个继承点的起点,在我们设计一个新的抽象类时,一定是用来继承的,所有在一个以继承关系形成的等级结构里,树叶节点应当是具体类,树枝节点均应当是抽象类,通俗来说就是,只要有派生类,那么此类就应当是抽象类
     
    抽象类可以有构造函数,但不允许有公开的构造函数,即使我们申明了一个没有构造函数的抽象类,编译器也会自动给它加上一个默认的受保护的没有参数的构造函数,子类在实例化时(不管是否带参数)
    使用:
    1、初始化抽象类的成员
    2、为继承自它的子类使用
     
     
    接口
    接口就是把隐式公共方法和属性组合起来,以封装特定功能的一个集合,一旦实现了接口,类就可以支持接口所指定的所有属性和成员。
    声明接口在语法上和抽象类完全相同,但不允许提供接口中任何成员的执行方式,所以接口不能被实例化,不能有构造函数
    实现接口就必须实现接口中的所有方法和属性。
    接口不能有任何修饰符
    接口可以包含:方法、属性、事件、索引器且被定义成私有的,
    接口不能包含:常量、域、构造函数、析构函数、静态成员
     
    析构函数:用户析构类的实例,和构造函数想法
    1:不鞥在结构中定义析构函数
    2:一个类只能有一个析构函数
    3:无法继承或重载析构函数
    4:无法调用析构函数,他们是自、自动被调用的。
    5:析构函数没有修饰符也没有构造函数
     
    抽象类和接口的区别
    1:抽象类可以给出一些成员的实现,接口不能。
    2:抽象类中的抽象成员可以被子类部分实现,接口中必须全部实现。
    3:一个类只能继承一个抽象类,但是可以继承多个接口。
     
    类是对象的抽象,抽象类是类的抽象,接口是行为的抽象
     
     
  • 相关阅读:
    基于sshpass批量实现主机间的key验证脚本
    一键安装mysql5.7.30脚本
    centos8网卡名称修改
    mysql分库备份脚本
    centos一键二进制编译安装mariadb-10.2.31脚本
    chrony时间同步服务简介及配置
    linux基于key验证
    expect 脚本语言中交互处理常用命令
    shell中数值测试和算术表达式比较
    JAVA Math的简单运用
  • 原文地址:https://www.cnblogs.com/wzq806341010/p/4008208.html
Copyright © 2020-2023  润新知