十一、面向对象 其他要点
admin
2024-03-18 00:40:04

文章目录

  • 1、命名空间 namespace
  • 2、object 方法
    • 2.1、静态方法
    • 2.2、成员方法
    • 2.3、虚方法
  • 3、String 常用方法
  • 4、StringBuilder
  • 5、结构体和类区别
  • 6、抽象类和接口区别

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

相关内容

热门资讯

初代PS5变Linux主机项目... IT之家 5 月 19 日消息,开发者 Andy Nguyen 于 5 月 17 日在 X 平台发布...
乐享品质旅游共赴美好山河|承德... 初夏风和,草木含香。5月19日,第16个中国旅游日如期而至。当天上午,5・19中国旅游日暨承德文旅全...
煮后摇出蓬松质感,香烤土豆解锁... 安徽人做土豆,有个挺绝的路子,跟常见的炖土豆、炒土豆丝完全两个路子。他们把土豆烤出了脆皮的效果,外头...
2026汕头牛肉丸本地精选:阿... 在汕头,选择一家地道的牛肉丸店,本地人的日常消费习惯是重要的参考指标。阿娟牛肉丸作为一家在金平区经营...