Java中的多态性

简介: Java中的多态性
  1. 何为多态性:

对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)

  1. 多态性的使用前提: ① 类的继承关系 ② 方法的重写
  2. 多态的使用:虚拟方法调用

有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法的,但是由于变量声明为父类类型,导致编译时,只能调用父类中声明的属性和方法。子类特有的属性和方法不能调用,但在运行期,我们实际执行的是子类重写父类的方法。总结:编译,看左边;运行,看右边。

  1. 对象的多态性,只适用于方法(静态方法除外),不适用于属性(编译和运行都看左边)


举例:

/*** @Author: YuShiwen* @Date: 2020/11/15 10:03 AM* @Version: 1.0*/publicclassSuperClass {
publicStringnumber="0";
publicstaticStringgetName(){
return"父类static";
    }
publicStringgetAge(){
return"父类42";
    }
}
classSubClassextendsSuperClass{
publicStringnumber="1";
publicstaticStringgetName(){
return"子类static";
    }
@OverridepublicStringgetAge(){
return"子类18";
    }
//子类特有的方法publicvoidprintMessage(){
System.out.println("子类特有的方法!");
    }
publicstaticvoidmain(String[] args) {
//多态性的使用前提:  ① 类的继承关系  ② 方法的重写//对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)SuperClasssubClass=newSubClass();
//对象的多态性,只适用于方法(静态方法除外),不适用于属性(编译和运行都看左边)System.out.println(subClass.number);
//有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,不能调用父类中没有的方法,// 但在运行期,我们实际执行的是子类重写父类的方法。//总结:编译,看左边;运行,看右边。System.out.println(subClass.getName());
System.out.println(subClass.getAge());
//编译期间出错,子类中虽然有该方法,但父类中没有该方法//subClass.printMessage();System.out.println();
SubClasssubClass1= (SubClass) subClass;
System.out.println(subClass1.number);
System.out.println(subClass1.getName());
System.out.println(subClass1.getAge());
//可以这样写,因为在编译期间看左边,左边已经强制转换为SubClass类型,编译器可以检测到该方法subClass1.printMessage();
    }
}

运行结果:

0父类static子类181子类static子类18子类特有的方法!Processfinishedwithexitcode0


目录
相关文章
|
6月前
|
设计模式 存储 Java
多态性在Java中的应用场景广泛
【4月更文挑战第7天】多态性在Java中的应用场景广泛
93 1
|
6月前
|
Java
在Java中,多态性是通过继承和接口实现的
【4月更文挑战第7天】在Java中,多态性是通过继承和接口实现的
68 1
|
Java
深入理解Java中的多态性
在Java编程中,多态性是一个非常重要的概念。它允许我们以一种灵活的方式处理不同类型的对象,并根据具体的对象类型调用相应的方法。
109 0
|
28天前
|
设计模式 算法 Java
Java中的多态性:深入理解与应用
【10月更文挑战第16天】 在Java编程的广阔天地中,多态性作为一种强大的面向对象特性,扮演着至关重要的角色。它允许我们以统一的方式处理不同类型的对象,极大地提高了程序的灵活性和可扩展性。本文将深入浅出地探讨Java中多态性的概念、实现机制以及在实际开发中的应用,帮助读者更好地理解和运用这一特性。
|
5月前
|
Java 编译器
在 Java 中,重写(Override)和重载(Overload)是两种不同的概念,用于实现多态性。它们有着不同的作用和使用场景。
在 Java 中,重写(Override)和重载(Overload)是两种不同的概念,用于实现多态性。它们有着不同的作用和使用场景。
|
6月前
|
Java 开发者
在Java中,接口和超类在多态性中扮演着重要的角色
【5月更文挑战第7天】Java中的接口和超类支持多态性,接口作为规范,允许多继承和回调机制;超类提供基类,实现代码重用和方法重写,两者共同促进代码的灵活性和可维护性。
54 10
|
6月前
|
Java
Java一分钟之-多态性:理解重写与接口
【5月更文挑战第9天】本文介绍了Java中的多态性,主要通过方法重写和接口实现。重写允许子类根据实际类型执行不同实现,关键点包括方法签名相同、访问权限不降低以及final、static和abstract方法不可重写。接口是抽象类型,包含抽象方法,提供另一种多态性实现。常见问题包括混淆重载与重写、不理解动态绑定以及滥用接口。为避免问题,需明确重写目的、合理设计接口,并在使用多态时注意类型检查。多态性是提升代码质量和灵活性的关键。
82 1
|
6月前
|
Java
Java语言中的多态性:深入解析与应用
Java语言中的多态性:深入解析与应用
107 0
|
6月前
|
Java 编译器
【JAVA学习之路 | 基础篇】面相对象特征--多态性
【JAVA学习之路 | 基础篇】面相对象特征--多态性
|
6月前
|
Java
在Java中,多态性允许不同类的对象对同一消息做出响应
【4月更文挑战第7天】在Java中,多态性允许不同类的对象对同一消息做出响应
57 2