zoukankan      html  css  js  c++  java
  • 面向对象——三大特性(封装、继承、多态)

    一、封装

    目的保护类,让类更加安全。

    做法:让类里面的成员变量变为私有(即访问修饰符)的,做相应的方法或者属性去间接的操作成员变量

    ※访问修饰符

    private 私有的              只能在该类中访问

    protected 受保护的       只能在该类和它的子类中访问

    public 公有的                在任何地方都可以访问

    封装成员方法来间接操作类里面的成员变量

    例:

     View Code
     View Code

    △使用成员属性来间接访问类里面的成员变量

      定义变量的时候最好用_下划线开头

      选中要做的成员变量右键→重构→封装字段(ctrl+r,e)

          自动生成的代码不是成员变量也不是成员方法  是成员属性

          造好之后可以通过成员属性操作成员变量

    例:

     View Code
     
     View Code

    构造方法(函数):

    作用:造对象所要调用的方法,用来创建对象

          每一个类都有一个构造方法,不写也有只不过看不到而已

    特殊性:写法特殊 (方法名=类名;没有返回值)

          执行时间特殊(创建对象时执行)

    用途:可以对成员进行初始化

    举个例子:

     View Code
     View Code

    举个栗子使用面向对象来求两个圆之间的面积

     View Code

    函数重载

    函数重载需要的条件:函数名要相同,参数的个数或者参数的类型不同

    this关键字:

    虽然写在类里面,但不是属于类的,而是属于该对象的

    一般来说在类里面 this关键字是可以省略的,但是如果有一个方法形参名字和成员名字重复,这时候再调用该对象里面的成员的时候需要加this关键字

    is关键字: 判断变量是不是属于某个类型

    例:if (y2 is Ren)   

        {     

                     s = "是一个人";   

        }   

        else   

        {     

                    s = "不是一个人";   

        }

    as关键字: 转换类型(只能转换兼容类型,可以将子类对象转换为父类对象)

    二、继承

    子类可以继承父类的一切

    特点:单继承   一个子类只能有一个父类  一个父类可以有多个子类

    C#特殊点:所有类的祖先都是object

    base关键字:在子类中代表父类对象,用法和this关键字相同         

                       如果父类有构造方法,那么子类也要有构造方法,如果父类构造需要参数,那么子类构造也必须有相应的参数。         

                       子类构造后面可以通过base调用父类的构造方法         

                       public China(string m):base(m) {}

     View Code

    sealed关键字

    密封类 该类不可以被继承

    sealed class 类名

    {

    }

    部分类:partial

    可以将一个类拆分成多个部分,分别放在多个文件内

    调用需要namespace相同,或用use引用

    namespace 命名空间 相当于虚拟文件夹

    partial class 类名   //拆分的类均加partial

    {

    }

    三、多态

    1.编译多态

    函数重载

    2.运行多态

    概念:当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,在调用该方法的时候表现出的不同就称为多态

    条件:必须要有继承  父类引用指向子类实例  子类必须对父类的方法进重写

    里氏代换原则:如果有一个地方需要使用到父类对象,那么你可以将一个子类对象给他

     View Code
  • 相关阅读:
    Android绝黑剑之AutoCompleteTextView、MultiAutoCompleteTextView之智能联想
    F5 BIGIP负载均衡器配置实例与Web管理界面体验
    Java进阶之动态绑定
    某大型银行深化系统之二十:异常规范
    数据结构之排序
    数据结构之数组
    使用ssh来登录其它linux机器
    beanstalkc简易指令说明集
    ruby数组方法concat和push的区别
    uWSGI基础攻略
  • 原文地址:https://www.cnblogs.com/zhangwei99com/p/6751836.html
Copyright © 2011-2022 走看看