java基础之面向对象多态性[24]
文章目录
一、什么是多态性?
多态性:对象在运行过程中的多种形态.面向对象三大特性之一,是抽象编程思维精髓所在,用抽象思维写代码,在运行过程中传入具体对象,同面向接口编程如出一辙.
多态可分为两类:
1.方法的重载和重写.
2.对象的多态性.
例如:使用父类引用指向子类对象(用大的类型去接受小的类型,向上转型,自动转换);父类通常都定义为抽象类或接口.
二、instanceof关键字
用于检查对象是否为指定的类型,通常把父类引用强制转换成子类引用时使用,以避免发生转换异常.
格式:对象名 instanceof 转换类型:返回布尔值,是为true,否为false
一般用于判断一个对象是否是某个类的实例.
三.代码演示
1.抽象类
abstract class Dog{
private String name;
private int age;
public Dog(){};
public Dog(String name,int age){
this.name=name;
this.age=age;
}
public abstract void eat();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2.两个抽象类实现
class HasykDog extends Dog{
public HasykDog(String name,int age){
super(name,age);
}
@Override
public void eat() {
System.out.println("我是:"+this.getName()+" 吃饭"+" 年龄:"+this.getAge());
}
}
class HomeDog extends Dog{
public HomeDog(String name,int age){
super(name,age);
}
@Override
public void eat() {
System.out.println("我是:"+this.getName()+" 吃饭"+" 年龄:"+this.getAge());
}
public void sleep(){
System.out.println("我爱睡觉!");
}
}
3.类内部定义一个静态方法
public static void run(Dog d){
System.out.println("跑步");
if (d instanceof HomeDog){
((HomeDog) d).sleep();
}
}
4.创建对象,实现代码
HomeDog hd=new HomeDog("佳佳",1);
Dog hk=new HasykDog("哈士奇",2);
hd.eat();
hd.sleep();
run(hd);
hk.eat();
run(hk);
四.多态小结
1.方法的重载和重写.
2.多个子类就是父类中的多种形态.
3.父类引用可以指向子类对象,自动转换.
4.子类对象指向父类引用需要强制转换(类型不对会报异常);
5.在实际开发中尽量使用父类引用(更利于扩展);
五.小结
本章概述了java基础中面向对象的多态性,多态是面向对象编程的灵魂,掌握了多态才能算掌握面向对象的精髓,所以本章为重点;
有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴,可以私信我,我会一一答复,感谢认可,感谢支持!
本文含有隐藏内容,请 开通VIP 后查看