多态及实现方式

1.首先讲讲java面向对象的三大特性

(1)封装

(2)继承

(3)多态

2.什么是多态?

  多态则就是一种行为的不同表现形式

3.具体实现(抽象类)

  我们先抽象出一个抽象类Animal

  定义一个Animal的行为叫say()发出声音的意思

  抽象类的特点:由abstract关键字修饰 class ,抽象类里面允许有具体的实现,但是抽象方法不允许,不得直接 new abstractclass

 

public abstract class Animal {
public abstract void say();
}


现在有一只小猫,它想发出自己独特的声音

public class Cat extends Animal {
@Override
public void say() {
System.out.println("I'm a cat : miao miao ~");
}
}


狗狗看见小猫可以叫,于是自己也想叫,那么同样去继承Animal并重写它的方法即可

public class Dog extends Animal {
@Override
public void say() {
System.out.println("I'm a dog : wang wang ~");
}
}

编写一个能发出声音的类,它依赖于Animal

public class AnimalSay {
static void Say(Animal animal){
animal.say();
}
}

在主函数中测试

public class Main {
public static void main(String[] args) {
Cat cat = new Cat();
Dog dog = new Dog();
AnimalSay.Say(cat);
AnimalSay.Say(dog);
}
}

输出:

 I'm a cat : miao miao ~
 I'm a dog : wang wang ~

4.接口实现

   定义接口

public interface  Animal {
void say();
}

Cat 实现接口
public class Cat implements Animal {
@Override
public void say() {
System.out.println("I'm a cat : miao miao ~");
}
}

Dog 实现接口
public class Dog implements Animal {
@Override
public void say() {
System.out.println("I'm a dog : wang wang ~");
}
}

发出声音的工具类

public class AnimalSay {
static void Say(Animal animal){
animal.say();
}
}

在主函数中测试

public class Main {
public static void main(String[] args) {
Cat cat = new Cat();
Dog dog = new Dog();
AnimalSay.Say(cat);
AnimalSay.Say(dog);
}
}

输出:

 I'm a cat : miao miao ~
 I'm a dog : wang wang ~

 

4.UML类图

  

 

 



  

 

posted @ 2020-03-14 19:58  叫熊猫啊  阅读(345)  评论(0)    收藏  举报