javaSE_12_方法覆盖(重写)和多态
2021-04-25 11:27
标签:lazy 电话 tag 有关 成员访问 传递 term demo com
概念 方法重写的应用场景 代码示例 什么是多态? 前提
在 java 中允许这样的两种语法出现,一种是向上转型(Upcasting),一种是向下转型(Downcasting),向上转型是指子类型转换为父类型,又被称为自动类型转换,向下转型是指父类型转换为子类型,又被称为强制类型转换。请看下图: 向上转型 使用格式:
向下转型:父类类型向子类类型向下转换的过程,这个过程是强制的。一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制类型转换的格式,便是向下转型。 使用格式: 多态的好处 多态的弊端 如何解决多态的弊端 注意: 多态中的成员访问特点 总结: 为什么成员方法和成员变量不同? 代码举例 定义子类 定义测试类 总结一下类型转换 javaSE_12_方法覆盖(重写)和多态 标签:lazy 电话 tag 有关 成员访问 传递 term demo com 原文地址:https://www.cnblogs.com/wurengen/p/13256525.html知识框架
方法覆盖 Override
package com.wrg;
public class Test {
public static void main(String[] args) {
// 创建子类对象
NewPhone np = new NewPhone();
// 调用父类继承而来的方法
np.call("张三");
// 调用子类重写的方法
np.showNum();
}
}
//父类
class Phone {
//父类的方法
public void sendMessage() {
System.out.println("发短信");
}
public void call(String name) {
System.out.println("给" + name + "打电话");
}
public void showNum() {
System.out.println("来电显示号码");
}
}
//智能手机类,子类
class NewPhone extends Phone {
//重写父类的来电显示号码功能,并增加自己的显示姓名和图片功能
public void showNum() {
//调用父类已经存在的功能使用super关键字
super.showNum();
//增加自己特有显示姓名和图片功能
System.out.println("显示来电姓名");
System.out.println("显示头像");
}
}
多态
//定义父类
public class Animal {
public int age = 40;
public void eat() {
System.out.println("动物吃东西");
}
}
public class Cat extends Animal {
public int age = 20;
public int weight = 10;
@Override
public void eat() {
System.out.println("猫吃鱼");
}
public void playGame() {
System.out.println("猫捉迷藏");
}
}
public class AnimalDemo {
public static void main(String[] args) {
//有父类引用指向子类对象
Animal a = new Cat();
// 当使用多态方式调用成员变量时,首先检查父类中是否有该变量,如果没有,则编译错误;如果有,执行的是父类中的变量
System.out.println(a.age);//40
//当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的是子类重写后方法
a.eat();//猫吃鱼
}
}
转型的异常
public class AnimalDemo {
public static void main(String[] args) {
// 向上转型
Animal a = new Cat();
a.eat();
// 调用的是 Cat 的 eat
// 向下转型
if (a instanceof Cat) {
Cat c = (Cat) a;
c.catchMouse();
// 调用的是 Cat 的 catchMouse
} else if (a instanceof Dog) {
Dog d = (Dog) a;
d.watchHouse(); // 调用的是 Dog 的 watchHouse
}
}
}
上一篇:SpringCloud入门
文章标题:javaSE_12_方法覆盖(重写)和多态
文章链接:http://soscw.com/index.php/essay/79363.html