继承
-
-
继承有多种实现方式
-
通过关键字继承,强耦合实现方式
-
组合式继承,松耦合继承方式
-
-
使用过Java或C#的应该知道尽量少用继承而是使用组合代替继承,可以使用高内聚,低耦合.Java之父之前在一次采访的时候也说过,如果给他一次机会重新做Java,他最希望修改的地方就是继承
-
type People struct { string int } func main() { p:=People{"smallming",17} fmt.Println(p.string,p.int) }
-
-
继承:is-a,强耦合性,一般认为类与类之间具有强关系
-
实现:like-a,接口和实现类之间的关系
-
依赖:use-a,具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A,一般作为方法参数
-
关联:has-a一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的
-
聚合:has-a,整体与部分、拥有的关系
-
组合:contains-a,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束
-
组合>聚合>关联>依赖
-
-
type People struct { name string age int } type Teacher struct { peo People classroom string //班级 } func main() { teacher := Teacher{People{"smallming", 17}, "302教室"} //必须通过包含的变量名调用另一个结构体中内容 fmt.Println(teacher.classroom, teacher.peo.age, teacher.peo.name) }
type People struct { name string age int } type Teacher struct { People classroom string //班级 } func main() { teacher := Teacher{People{"smallming", 17}, "302教室"} fmt.Println(teacher.classroom, teacher.age, teacher.name) }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人