这一讲主要讲的就是一下三个方面,即
(0)Java多态
多态就是Java里的一个行为方法和行为具有多种状态。
(1)向上类型转换
以前的实对象是通过类实例化的,现在引入接口以后就可以通过接口的名称来实例化对象,因为类是接口衍生的。这个概念和继承差不多。
(2)方法的动态绑定
虽然接口衍生了类,但是不止一个类,而且类里面也有很多方法。但在实例化对象的时候,会自动进行方法绑定,也就是会对应每个类自身的方法。
具体的代码演示如下:
package com.csdn.pol;
public class Demo12 {
public static void main(String[] args) {
Cat c = new Cat();
Animal cat = new Cat();//向上类型转换
// cat.eat();
// cat.sleep();
Animal dog = new Dog();
// dog.eat();
// dog.sleep();
//
Animal pig = new Pig();
// pig.eat();
// pig.sleep();
Person p = new Person();
p.care(cat);
p.care(dog);
p.care(pig);
}
}
//(0)Java多态 一个方法有多种状态
//(1)向上类型转换
//(2)方法的动态绑定
class Person{
// public void care(Cat cat) {
// cat.eat();
// cat.sleep();
// }
// public void care(Dog dog) {
// dog.eat();
// dog.sleep();
// }
public void care(Animal a) {
a.eat();
a.sleep();
}
}
interface Animal{
public void eat();
public void sleep();
}
class Cat implements Animal{
@Override
public void eat() {
System.out.println("cat eat...");
}
@Override
public void sleep() {
System.out.println("cat sleep...");
}
}
class Dog implements Animal{
@Override
public void eat() {
System.out.println("dog eat...");
}
@Override
public void sleep() {
System.out.println("dog sleep...");
}
}
class Pig implements Animal{
@Override
public void eat() {
System.out.println("pig eat...");
}
@Override
public void sleep() {
System.out.println("pig sleep...");
}
}