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类图
原文:https://www.cnblogs.com/pandayo/p/12493873.html