Java教程

java_DAY12:多态

本文主要是介绍java_DAY12:多态,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

3:多态

1:什么是多态

Pet  p = new Dog(); // p 就是引用变量

在java中多态的体现? --- 》 所谓多态,就是指一个引用变量在不同的情况下的多种表现状态。也可以理解为,多态是指通过指向父类的引用变量,来调用在不同子类中实现的方法。

注意:方法重写是实现多态的基础

2:多态的运用

一般用于继承体系下,子类重写父类的某个方法,调用时根据具体的子类实现去调用子类的方法

3:抽象方法介绍

如果父类中有一个方法,每一个子类都有不同的实现,此时可以将这个方法声明为抽象方法,抽象方法是没有方法体的,只是一种规范。

Pet类中的toHospital() 方法不需要具体的实现,而且实现后没有任何意义,此时可以将Pet类中的toHospital()声明为抽象方法;

什么是抽象方法:被abstract修饰的方法,就是抽象方法。

1、抽象类为什么不能实例化

2、抽象类中是否可以存在构造方法?

3、抽象类和抽象方法的关系?

4、抽象类能不能继承普通类?

5、普通类能不能继承抽象类

6、抽象方法和普通方法的的区别!

语法:方法体,调用

特征:

1:抽象方法没有方法体,只有方法的声明;

2:如果一个类中存在抽象方法,那么这个类必须声明为抽象类;abstact修饰的类,抽象类不能创建对象

3:抽象类不能被实例化;

4:抽象方法必须在子类中被重写,除非子类也是抽象类;

如:

// 抽象类

public abstract class Pet{

 //抽象方法

public abstract void toHospital();

 

4:向上转型

把子类对象直接赋给父类引用叫向上转型,向上转型不用强制转换。

<父类型> <引用变量名> = new <子类型>();

如:

Pet p = new Dog();

注意:

1、此时通过父类引用变量调用的方法是子类重写或继承父类的方法

2、此时通过父类引用变量无法调用子类特有的方法

 

5:向下转型 - 强制类型转换

向上转型只能使用子类重写的一些方法,和从父类中继承的一些方法,如何使用自己独有的一些方法呢?可以使用向下转型。

向下转型需要使用强制类型转换,调用子类特有的方法;

语法:

<子类型> <引用变量名> = (<子类型> )<父类型的引用变量>;

如:

Dog dog=(Dog)pet;//将pet 转换为Dog类型

dog.method();//执行Dog特有的方法

在进行向下转型的时候,非常容易发生类型转换异常,

ClassCastException --- 类型转换异常

instanceof用于判断一个引用类型所引用的对象是否是一个类的实例

这篇关于java_DAY12:多态的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!