1.1多态的概念
同一件事情,不同的对象执行方法有不同的结果
1.2方法的多态
方法的重写和重载就是多态
/*
* 重写和重载是方法的多态
*/
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();
}
}
1.3对象的多态
父类的引用指向子类的对象
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();
}
}
1.4多态的转型
1.4.1多态的向上转型
语法格式:
父类 父类的引用 = new 子类 ();
向上转型是自动将子类的对象赋给父类的引用
父类的引用可以调用父类所有方法,但是不能调用子类独有的方法!
/*
* 多态的向下转型
*/
package com.y.lianxi;
class Animal1{
public void eat() {
System.out.println("吃饭");
}
}
class Dog1 extends Animal1{
@Override
public void eat() {
System.out.println("吃骨头");
}
}
class Cat1 extends Animal1{
@Override
public void eat() {
System.out.println("吃猫粮");
}
}
public class Lianxi16 {
public static void main(String[] args) {
Animal1 animal = new Dog1();
Dog1 dog = (Dog1) animal;
animal.eat();
}
}