AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
>#### 14.多态 ~~~ java中有两种情况可以体现多态,一是继承,二是实现接口。 所谓多态就是一种引用在不同情况下的多种状态,也可以这样理解: 多态是通过指向父类的指针,来调用不同子类中的实现方法。 eg:Pet pet = new Dog(); pet.eat(); Pet pet1 = new Cat(); pet1.eat(); 多态在java中有什么用呢?案例:主人给宠物喂食: package com.demo03; /*实现功能:小猫吃东西 主人喂的! 食物是:鲫鱼*/ //多态 抽象和super知识点 public class demo01 { public static void main(String[] args) { Master ms = new Master(); // Dog dog=new Dog(); // Bone bone=new Bone("骨头"); // ms.feed(dog, bone); /* * Cat cat=new Cat(); Fish fish=new Fish("鲫鱼"); ms.feed(pet,food); */ Pet pet = new Cat(); // Pet pet=new Pet();//抽象类不能被实例化 Food food = new Food("鲫鱼"); ms.feed(pet, food); } } class Master { public void feed(Pet pet, Food food) { pet.eat(); System.out.println("主人喂的!"); food.showName(); } } class Food { String name; public Food(String name) { this.name = name; } public void showName() { System.out.println("食物是:" + this.name); } } class Bone extends Food { public Bone(String name) { super(name); } public void showName() { System.out.println("食物是:" + this.name); } } class Fish extends Food { public Fish(String name) { super(name); } public void showName() { System.out.println("食物是:" + this.name); } } abstract class Pet { String name; int age; public abstract void eat(); /抽象类中不一定要有抽象方法, 抽象方法只能放在抽象类中,抽象方法不可以有方法体 } class Dog extends Pet { public void eat() { System.out.println("小狗要吃东西"); } } class Cat extends Pet { public void eat() { System.out.println("小猫吃东西"); } } 注意:通过多态的方式来访问属性和方法:只能访问父类中已有的属性和方法, 子类独有的属性的方法通过多态访问不到。访问方法时,如果方法被子类重写, 则访问到的是重写后的方法。如果方法未被重写,则访问父类方法。 ~~~