关于面向对象的一个疑义
关于面向对象的一个疑问?Cat c new Cat()Animal a new Cat()这两者的区别,为什么推荐采用后者![解决
关于面向对象的一个疑问?
Cat c = new Cat();
Animal a = new Cat();
这两者的区别,为什么推荐采用后者!
[解决办法]
第二个 Cat 肯定是继承自 Animal ,声明父类,有子类创建,这是多态
[解决办法]
低耦合,业务单元不需要知道具体类是cat还是dog还是mouse。
比如业务类有Kill方法,如果需要知道具体类的话需要写
Kill(Cat cat);
Kill(Dog dog);
Kill(Mouse mouse);
而使用基类则只要写
Kill(Animal animal);
[解决办法]
[解决办法][解决办法]多态是实现共性下的特性.
比如 animal 猫, 狗 都会叫
但 猫叫"喵", 狗叫"汪"
animal a = new cat();
animal b = new dog();
void shout(animal c)
{
c.shout();
}
此时,c传的a就是猫叫,为b就是狗叫;
如果某属性或方法是子类cat dog特有的,而不是共性的,使用的时候,你就必须明确是cat还是dog
[解决办法]Cat c = new Cat(); //这应该是派生类
Animal a = new Cat(); //用基类的对象new一个派生类出来