• 十一、面向对象 其他要点


    1、命名空间 namespace

    • 命名空间是用来组织和重用代码的
    • 不同命名空间的相互使用,需要通过 using 引用命名空间 或 命名空间点调用以指明出处

    补充 访问修饰符 internal:只能在该程序集中使用

    2、object 方法

    2.1、静态方法

    调用时可以不用写 object.,因为 object 是所有类的基类,任何类都继承了这个方法,直接使用即可

    • Equals(object objA, object objB):判断两个对象是否相等
      • 最终判断权,归左侧对象里的 Equals 所有
    • ReferenceEquals(object objA, object objB):判断两个对象是否引用是否相同(主要用来比较引用类型对象)
      • 值类型对象返回的始终是 false

    2.2、成员方法

    都是用 extern 关键字修饰的,声明在外部实现的方法

    • GetType():获取对象运行时的类型 Type
    • MemberwiseClone():获取对象的浅拷贝对象

    2.3、虚方法

    • ToString():返回当前对象代表的字符串
      • 我们也可以重写该方法定义自己的对象转字符串方法
    • Equals(object obj):默认实现是比较两者引用是否相同,相当于 ReferenceEquals,但是微软在所有值类型的基类 System.ValueType 中重写了该方法,用来比较值是否相等
      • 我们也可以重写该方法定义自己的比较相等方法
    • GetHashCode():获取对象的哈希码

    3、String 常用方法

    字符串实质就是 char[]

    • stringchar[]char[] arr = str.ToCharArray();
      • 直接通过索引器获取更方便(只读):str[0]
      • 字符串长度:string.Length
    • 字符串拼接str.Format("{0}{1}", "xx", "xxx")
    • 正向查找字符/字符串位置:str.IndexOf("x")
    • 反向查找字符/字符串位置:str.LastIndexOf("x")
    • 移除指定下标到结束的字符:str.Remove(index)
      • 两个参数:str.Remove(index, length)
    • 替换指定字符串:str.Replace(oldStr, newStr)
    • 大小写转换:str.ToUpper(); + str.ToLower()
    • 字符串截取从下标开始到结束:str.Substring(index)
      • 两个参数:str.Substring(index, length)
    • 字符串分割str.Split('x')

    4、StringBuilder

    • 所属 namespace:System.Text
    • 实例化:StringBuilder sb = new StringBuilder("xxx");
    • 容量:sb.Capacity
    • 长度:sb.Length
    • 增加:sb.Append("xxx").AppendFormat("{0}{1}", x1, x2)...
    • 删除:sb.Remove(index, length)
    • 改写:sb[index] = 'x'
    • 查询:sb[index]
    • 插入:sb.Insert(index, "xxx")
    • 替换:sb.Replace(oldStr, newStr)
    • 清空:sb.Clear()

    补充:相等判断:sb1.Equals(sb2)

    5、结构体和类区别

    \classStruct
    类型引用
    存储位置
    使用 protected 修饰不可
    变量指定初始值随意不可
    声明无参构造随意不可
    声明有参构造后
    默认的无参构造是否被顶掉
    构造函数重初始化全部变量随意必须
    析构函数
    继承不可
    static 修饰不可
    内部是否可声明自己类型的变量不可

    补充:结构体可以继承接口,因为接口是行为抽象,只是一种规范

    6、抽象类和接口区别

    • 相同点
      • 都可被继承
      • 都不能实例化
      • 都可声明方法
      • 子类必须实现未实现的方法
      • 都遵循里氏替换原则
    • 区别如下表
    \抽象类接口
    构造函数随意
    继承性单继承多继承
    成员变量随意
    方法普通成员方法
    虚方法
    抽象方法
    静态方法
    抽象方法
    访问修饰符建议不写
    默认 public
  • 相关阅读:
    java项目测试成功后部署到服务器上的相关问题
    R语言学习笔记——入门篇:第四章-基本数据管理
    HTTP(二)HTTP消息结构
    Linux下快速确定目标服务器支持哪些协议和密码套件
    uniapp之使用map组件显示接收过来的经纬度
    flask中解决图片不显示的问题(很细微的点)
    【网页设计】期末大作业html+css(音乐网站)
    tensorflow QAT
    CocosCreator重复滚动列表
    JVM-类加载子系统
  • 原文地址:https://blog.csdn.net/qq_30769437/article/details/128177400