黑马程序员技术交流社区
标题:
对于多态不懂的,这里有详细的讲解
[打印本页]
作者:
廉伟
时间:
2012-10-2 12:01
标题:
对于多态不懂的,这里有详细的讲解
/*
多态 某一类事物的多种存在形态。
同一种行为表现出不同的状态
我们以前开发中,使用的对象是哪个类的就用这个类来声明
狗 dog=new 狗
狼 wolf=new 狼
动物 dw=new 狼;
动物 dw=new 狗;
动物 dw=new 猫;
多态可以存在的前提:
子类与父类 继承
父类 引用 = new 子类 父类引用指向子类对象
接口与实现类 实现
接口 引用= new 实现类 接口回调
需要进行重写
多态的作用与好处
提高了代码复用性与扩展性,增加了后期代码的可维护性
前期可能不知道具体的子类(实现类)是怎样实现的,但是我们可以在父类,接口中
定义这些行为,让子类与实现类去实现。使用时使用的是父类的引用或者接口的引用,
这样它的扩展性与可维护性增强
存在的弊端
存在问题:在子类或实现类中独有的行为不可能通过父类引用或者接口的引用去调用。
*/
class Demo7
{
public static void main(String[] args)
{
/*
Cat cat=new Cat();
cat.eat();
Dog dog=new Dog();
dog.eat();
Wolf wolf=new Wolf();
wolf.eat();
*/
Animal a=new Cat();
a.eat();
a.sleep();
}
}
abstract class Animal
{
abstract void eat();
}
class Dog extends Animal
{
void eat(){
System.out.println("狗吃骨头");
}
}
class Cat extends Animal
{
void eat(){
System.out.println("猫吃鱼");
}
//独有的行为
void sleep(){
System.out.println("猫睡觉");
}
}
class Wolf extends Animal
{
void eat(){
System.out.println("狼吃肉");
}
}
/*
interface 业务
{
public void operation();
}
class A implements 业务
{
public void operation(){
}
}
//业务进行扩展
class B implements 业务
{
public void operation(){
}
}
class Tools
{
public static void show(业务 yw){
yw.operation();
}
}
main(){
B b=new B();
//A a=new A();
Tools.show(b);
}
*/
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2