Java中类与对象如何体现多态性?

2026-05-22 06:141阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1091个文字,预计阅读时间需要5分钟。

Java中类与对象如何体现多态性?

Java中类与对象的多态特性:多态允许同类型的对象执行不同的行为。多态是类与对象三大特性之一,它指的是同一个方法在不同对象上产生不同的行为。例如,不同类型的对象可能都有名为move的方法,但它们的行为可能不同。以下是多态的一些关键点:

1. 同类型对象执行相同行为,表现不同特征。

2.多态体现的是类与对象的关系。

3.多态的实质是运行时多态。

4.多态的三个要素:同一继承关系的子类、相同的方法名、不同的方法体。

多态的形式:

1. 父类引用指向子类对象。

2.父类方法调用子类重写的方法。

讲解了Java中类与对象中的多态特征。 Java类与对象-多态

多态:类与对象三大特征之一

什么是多态?

同类型的对象,执行同一个行为,会表现出不同的行为特征。

Java中类与对象如何体现多态性?

多态的形式

1、父类类型 对象名称 = new 子类构造器();

2、接口 对象名称 = new 实现类构造器();

以下为例:

/*
* 此例中
* Animal为抽象父类 有一个抽象方法shout()
* Dog为继承Animal的一个子类 重写了shout()
并有独有方法 watchDoor()
Cat为继承Animal的另一个子类 重写了shout()
并有独有方法 catWalk()
**/
Animal a = new Dog(); // 这里a就是一个形式的多态

多态成员的访问特点

方法调用:编译时看父类是否有该方法,运行时访问子类中的此方法。

编译看‘左边‘,运行看’右边‘。

变量调用:编译时看父类是否有该变量,运行时也访问父类中的此变量。

编译看‘左边‘,运行也看’左边‘。

==> 多态侧重行为的多态(变量(属性)没有多态)。

多态的优势

1、便于代码的扩展和维护。

2、定义方法(函数)时,使用父类型作为参数,该方法就可以接收这个父类的一切子类对象,使操作更加便捷。

以下为例:

/*
* 此例中
* Animal为抽象父类 有一个抽象方法shout()
* Dog为继承Animal的一个子类 重写了shout()
* Cat为继承Animal的另一个子类 重写了shout()
**/
public static void main(String[] args) {
Dog d = new Dog();
Cat c = new Cat();
compete(d);
compete(c);
}
public static void compete(Animal a) { // 传参时形参可以是父类
a.shout();
}

多态存在的问题

多态不能使用子类的独有功能。

在多态下想要使用子类的独有方法怎么办呢?

这就引入了多态中的类型转换,将父类型强制类型转换成子类后,即可实现该目的。

多态中的类型转换

1、自动类型转换 (子类到父类)

2、强制类型转换 (父类到子类) ==> 解决了多态中存在的问题,强转后可以调用子类的独有功能

子类名称 子类对象名 = (子类名称) 多态对象;

这种操作可能由于编写者的疏忽并且编译器编译不会提示错误,若将一个非本子类的多态对象赋给该子类,运行时便会报错。

为了解决这一问题,通常在强制转换之前先用instanceof判断是否正确。

以下为例:

/*
* 此例中
* Animal为抽象父类 有一个抽象方法shout()
* Dog为继承Animal的一个子类 重写了shout()
并有独有方法 watchDoor()
Cat为继承Animal的另一个子类 重写了shout()
并有独有方法 catWalk()
**/
Animal d = new Dog(); // 构建多态对象d
Animal c = new Cat(); // 构建多态对象c

Cat c2 = (Cat) c; // 将c有Animal类强制转换成Cat类,使其可以调用Cat的独有方法
c.catwalk(); // 错,多态不能使用子类的独有功能。
c2.catwalk(); // 对。

if (c instanceof Cat) { // 为避免错误最好先判断其正确性
Cat c2 = (Cat) c;
c2.catwalk();
}

以上就是java中类与对象的一个特征,多态。

本文共计1091个文字,预计阅读时间需要5分钟。

Java中类与对象如何体现多态性?

Java中类与对象的多态特性:多态允许同类型的对象执行不同的行为。多态是类与对象三大特性之一,它指的是同一个方法在不同对象上产生不同的行为。例如,不同类型的对象可能都有名为move的方法,但它们的行为可能不同。以下是多态的一些关键点:

1. 同类型对象执行相同行为,表现不同特征。

2.多态体现的是类与对象的关系。

3.多态的实质是运行时多态。

4.多态的三个要素:同一继承关系的子类、相同的方法名、不同的方法体。

多态的形式:

1. 父类引用指向子类对象。

2.父类方法调用子类重写的方法。

讲解了Java中类与对象中的多态特征。 Java类与对象-多态

多态:类与对象三大特征之一

什么是多态?

同类型的对象,执行同一个行为,会表现出不同的行为特征。

Java中类与对象如何体现多态性?

多态的形式

1、父类类型 对象名称 = new 子类构造器();

2、接口 对象名称 = new 实现类构造器();

以下为例:

/*
* 此例中
* Animal为抽象父类 有一个抽象方法shout()
* Dog为继承Animal的一个子类 重写了shout()
并有独有方法 watchDoor()
Cat为继承Animal的另一个子类 重写了shout()
并有独有方法 catWalk()
**/
Animal a = new Dog(); // 这里a就是一个形式的多态

多态成员的访问特点

方法调用:编译时看父类是否有该方法,运行时访问子类中的此方法。

编译看‘左边‘,运行看’右边‘。

变量调用:编译时看父类是否有该变量,运行时也访问父类中的此变量。

编译看‘左边‘,运行也看’左边‘。

==> 多态侧重行为的多态(变量(属性)没有多态)。

多态的优势

1、便于代码的扩展和维护。

2、定义方法(函数)时,使用父类型作为参数,该方法就可以接收这个父类的一切子类对象,使操作更加便捷。

以下为例:

/*
* 此例中
* Animal为抽象父类 有一个抽象方法shout()
* Dog为继承Animal的一个子类 重写了shout()
* Cat为继承Animal的另一个子类 重写了shout()
**/
public static void main(String[] args) {
Dog d = new Dog();
Cat c = new Cat();
compete(d);
compete(c);
}
public static void compete(Animal a) { // 传参时形参可以是父类
a.shout();
}

多态存在的问题

多态不能使用子类的独有功能。

在多态下想要使用子类的独有方法怎么办呢?

这就引入了多态中的类型转换,将父类型强制类型转换成子类后,即可实现该目的。

多态中的类型转换

1、自动类型转换 (子类到父类)

2、强制类型转换 (父类到子类) ==> 解决了多态中存在的问题,强转后可以调用子类的独有功能

子类名称 子类对象名 = (子类名称) 多态对象;

这种操作可能由于编写者的疏忽并且编译器编译不会提示错误,若将一个非本子类的多态对象赋给该子类,运行时便会报错。

为了解决这一问题,通常在强制转换之前先用instanceof判断是否正确。

以下为例:

/*
* 此例中
* Animal为抽象父类 有一个抽象方法shout()
* Dog为继承Animal的一个子类 重写了shout()
并有独有方法 watchDoor()
Cat为继承Animal的另一个子类 重写了shout()
并有独有方法 catWalk()
**/
Animal d = new Dog(); // 构建多态对象d
Animal c = new Cat(); // 构建多态对象c

Cat c2 = (Cat) c; // 将c有Animal类强制转换成Cat类,使其可以调用Cat的独有方法
c.catwalk(); // 错,多态不能使用子类的独有功能。
c2.catwalk(); // 对。

if (c instanceof Cat) { // 为避免错误最好先判断其正确性
Cat c2 = (Cat) c;
c2.catwalk();
}

以上就是java中类与对象的一个特征,多态。