多态简单的说就是同一种行为的多种表现形式
方法的重载和重写就是方法的多态
/*
* 重写和重载是方法的多态
*/
package com.u.tt;
class People3{
public void eat() {
System.out.println("吃饭");
}
public void eat(String name) { //方法的重载
System.out.println("吃好吃的饭");
}
}
class Man extends People3{
@Override
public void eat() { //方法的重写
System.out.println("吃肉");
}
}
public class Demo2 {
public static void main(String[] args) {
People3 people = new People3();
people.eat();
people.eat("张三");
Man man = new Man();
man.eat();
}
}
对象的多态
父类的引用指向子类的对象
Dog dog = new Dog();
条件:
1.必须是继承关系
2.必须重写父类的方法
3.父类的引用指向子类的对象,不能调用子类独有的方法
/*
* 对象的多态
*/
package com.y.lianxi;
class Animal{
public void eat() {
System.out.println("吃饭");
}
public void sleep() {
System.out.println("睡觉");
}
public void drink() {
System.out.println("喝水");
}
}
class Cat extends Animal{
@Override
public void eat() {
System.out.println("吃猫粮");
}
@Override
public void sleep() {
System.out.println("站着睡觉");
}
public void work() {
System.out.println("工作");
}
}
public class Lianxi15 {
public static void main(String[] args) {
Animal animal = new Cat();
animal.eat();
//animal.work();调用不了子类独有的方法
animal.drink();
}
}
多态的转型
多态的向上转型
语法格式:
父类 父类的引用 = new 子类 ();
向上转型是自动将子类的对象赋给父类的引用
父类的引用可以调用父类所有方法,但是不能调用子类独有的方法!
多态的向下转型
语法格式:
父类 父类的引用 = new 子类();
子类 子类的引用 = (子类) 父类的引用; 强制转换