【Java基础】详解面向对象特性(诸如继承、重载、重写等等)

简介: 【Java基础】详解面向对象特性(诸如继承、重载、重写等等)

封装、继承、多态是java面向对象的三大特征,封装在这里就不多说了,主要说一下对继承和多态的理解

总结导图:

继承

what: 继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。java中使用extends关键字来实现类的继承机制

语法如下

<modifier> class <name>[extends]<superclass>{...
 ...}

通过继承,子类自动拥有基类(superclass)的所有成员(成员变量和方法)。另外,java和C不同,java只允许单继承

多态

what: 多态,即动态绑定是指在执行期间判断所引用对象的实际类型,根据其实际类型调用其对应的方法。Java实现多态有三个必要条件:继承、重写、向上转型。

正常情况下,Cat c = new Cat(); 就是实例化一个Cat对象,但是如果是这样呢,Cat c=newBlackCat();

Cat类型的指向Cat的子类BlackCat,那么此时的c不但可以使用父类的共性,还可以使用子类强大的功能,而这被称为向上转型。

重载

what: 方法的重载是指一个类中可以定义有相同的名字,但参数列表各不同(即参数的个数或类型不同),另外有一点需要注意的是,重载时返回类型可以不一致,但是仅仅只是返回类型不一致,而参数列表一致时并不会构成重载,这是因为重载的核心在于参数列表的不同。

重写

what: 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 方法名一样,返回值和形参都不能改变,覆盖方法体

  • 在子类中可以根据需要对从基类中继承来的方法进行重写
  • 重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型
  • 重写方法不能使用比被重写方法更严格的访问权限
  • 重写方法不能声明抛出比被重写方法范围更大的异常类型。

详细说明

重写Override表示子类中的方法可以和父类中的某个方法的名称和参数参数完全相同,通过子类创建的实例调用这个方法时,将调用子类的定义方法,相当于子类将父类中的方法覆盖了,所以重写又名覆盖,子类覆盖父类方法时,只能比父类抛出更少的异常,或者是抛出父类异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题,访问权限可不可以比父类大

两者区别

重载与重写是 Java 多态性的不同表现。

重写是父类与子类之间多态性的表现,在运行时起作用(动态多态性,譬如实现动态绑定)

而重载是一个类中多态性的表现,在编译时起作用(静态多态性,譬如实现静态绑定)。

目录
相关文章
|
1月前
|
数据采集 监控 Oracle
GraalVM 24 正式发布阿里巴巴贡献重要特性 —— 支持 Java Agent 插桩
阿里巴巴是 GraalVM 全球顾问委员会的唯一中国代表,阿里云程序语言与编译器团队和可观测团队合作实现了 GraalVM 应用的无侵入可观测能力,并在 ARMS 平台上线了该功能。目前在 GraalVM 24 中发布的是支持 Java agent 的第一步,其余能力将在 GraalVM 的后续版本中陆续发布。
162 21
|
2月前
|
缓存 安全 Java
java面试-基础语法与面向对象
本文介绍了 Java 编程中的几个核心概念。首先,详细区分了方法重载与重写的定义、发生阶段及规则;其次,分析了 `==` 与 `equals` 的区别,强调了基本类型和引用类型的比较方式;接着,对比了 `String`、`StringBuilder` 和 `StringBuffer` 的特性,包括线程安全性和性能差异;最后,讲解了 Java 异常机制,包括自定义异常的实现以及常见非检查异常的类型。这些内容对理解 Java 面向对象编程和实际开发问题解决具有重要意义。
|
2月前
|
缓存 运维 Java
Java静态代码块深度剖析:机制、特性与最佳实践
在Java中,静态代码块(或称静态初始化块)是指类中定义的一个或多个`static { ... }`结构。其主要功能在于初始化类级别的数据,例如静态变量的初始化或执行仅需运行一次的初始化逻辑。
94 4
|
5月前
|
存储 Java 开发者
什么是java的Compact Strings特性,什么情况下使用
Java 9引入了紧凑字符串特性,优化了字符串的内存使用。它通过将字符串从UTF-16字符数组改为字节数组存储,根据内容选择更节省内存的编码方式,通常能节省10%至15%的内存。
|
5月前
|
存储 Java 数据挖掘
Java 8 新特性之 Stream API:函数式编程风格的数据处理范式
Java 8 引入的 Stream API 提供了一种新的数据处理方式,支持函数式编程风格,能够高效、简洁地处理集合数据,实现过滤、映射、聚合等操作。
165 6
|
5月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
75 1
|
4月前
|
Java
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
306 15
|
9月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
8月前
|
Java 编译器
Java——类与对象(继承和多态)
本文介绍了面向对象编程中的继承概念,包括如何避免重复代码、构造方法的调用规则、成员变量的访问以及权限修饰符的使用。文中详细解释了继承与组合的区别,并探讨了多态的概念,包括向上转型、向下转型和方法的重写。此外,还讨论了静态绑定和动态绑定的区别,以及多态带来的优势和弊端。
175 7
Java——类与对象(继承和多态)
|
7月前
|
Java
java继承和多态详解
java继承和多态详解
95 5