从is和as想到Is-A、Has-A和Use-A(二)
来源:互联网 发布:综艺游戏环节名 知乎 编辑:程序博客网 时间:2024/06/01 16:45
C#中的is和as操作符,分别是做类型兼容检查和类型转换用的。而Is-A,Has-A,Use-A则是用来描述类与类之间关系的。简单的说Is-A代表继承,Has-A代表合成,Use-A代表依赖。
Is-A继承关系:“表示类与类之间的继承关系、接口与接口之间的继承的关系以及类对接口实现的关系”。如:
public abstract class A
{
……
}
public class B : A
{
……
}
B类继承自A类,那么B类和A类的关系就是Is-A的关系。
Has-A合成关系:“是关联关系的一种,是整体和部分(通常为一个私有的变量)之间的关系,并且代表的整体对象负责构建和销毁代表部分对象,代表部分的对象不能共享”。如:
public class Heart
{
……
}
public class Man
{
private Heart heart = new Heart();
……
}
Man类和Heart类便是Has-A关系,人死的时候心也就死了(当然有心脏移植,不想抬杠,哈哈),人和心是一种比较强的拥有关系,并且心是不能共享的。
Use-A依赖关系:“是类与类(通常为函数的参数)之间的连接,依赖总是单向的”。如
public abstract class Course
{
……
}
public class Student
{
public void Learn(Course course)
{
……
}
}
Student类和Course的关系就是Use-A关系,Student类总是单向指向Course,学生知道自己学的是什么课程,而课程根本不关心它被哪个学生学习。
关于继承与组合Gof的《设计模式》中有很好的讨论,依赖关系现在很多人都提倡倒转的依赖,也是面向对象原则中的依赖倒转原则:要依赖于抽象(抽象类、接口或委托变量)不要依赖于具体。(本来昨天写了第一篇介绍C#的is,as,结果丢了,所以这篇是第二篇,有空补上)
- 从is和as想到Is-A、Has-A和Use-A(二)
- 从is和as想到Is-A、Has-A和Use-A(一)
- use-a, has-a, is-a和实现关系 介绍
- use-a, has-a, is-a和实现关系 介绍
- “is a” 和”has a“
- HAS-A和IS--A
- “is a” 和”has a“
- is-a和has-a
- is-a 和 has-a
- 关键字is 、as,is a 、has a
- is-a、 has-a、 use-a
- is-A && as-A && has-A
- is a 和 has a 是什么意思?
- Is a 和Has a之间关系
- Is a 和Has a之间关系
- Is-A 和 Has-A关系
- "is a"关系和"has a"关系
- is-A和has-A的区别
- 丫头,我不后悔
- 在希望的互联网上--中国互联网产业发展-1
- 在希望的互联网上--中国互联网产业发展-2
- ExtJS简单的动画效果
- 为何青少年情迷吸血鬼僵尸电影?
- 从is和as想到Is-A、Has-A和Use-A(二)
- linux配置静态IP地址的方法
- [双语阅读]新加坡提前展示APEC峰会领导人服装
- 阈值法进行边缘检测
- B-样条曲线教程(B-spline Curves Notes)目录
- 人工神经网络的典型模型
- 取得手机屏幕分辨率-Displaymetric类的使用
- informix系统一览表
- 让人难以抵抗的表白