这几天我在重新复习Java语言基础,虽然和团队一起,自己个人都进行了实际项目的开发,但越往上面走越觉得自己应该花点时间看看Java的基础知识,巩固一下基础。今天复习的是多态,同时写下自己的学习心得。
数据抽象、继承和多态是面向对象程序设计语言的三大特性。多态,我觉得它的作用就是用来将接口和实现分离开,改善代码的组织结构,增强代码的可读性。在某些很简单的情况下,或许我们不使用多态也能开发出满足我们需要的程序,但大多数情况,如果没有多态,就会觉得代码极其难以维护。
在Java中,谈论多态就是在讨论方法调用的绑定,绑定就是将一个方法调用同一个方法主体关联起来。在C语言中,方法(在C中称为函数)的绑定是由编译器来实现的,在英文中称为early binding(前期绑定),因此,大家自然就会想到相对应的late binding(后期绑定),这在Java中通常叫做run-time binding(运行时绑定),我个人觉得这样称呼更贴切,运行时绑定的目的就是在代码运行的时候能够判断对象的类型。通过一个简单的例子说明:
/**
* 定义一个基类
*/
public Class Parents {
public void print() {
System.out.println(“parents”);
}
}
/**
* 定义两个派生类
*/
public Class Father extends Parents {
public void print() {
System.out.println(“father”);
}
}
public Class Mother extends Parents {
public void print() {
System.out.println(“mother”);
}
}
/**
* 测试输出结果的类
*/
public Class Test {
public void find(Parents p) {
p.print();
}
public static void main(String[] args) {
Test t = new Test();
Father f = new Father();
Mother m = new Mother();
t.find(f);
t.find(m);
}
}
最后的输出结果分别是father和mother,将派生类的引用传给基类的引用,然后调用重写方法,基类的引用之所以能够找到应该调用那个派生类的方法,就是因为程序在运行时进行了绑定。
学过Java基础的人都能很容易理解上面的代码和多态的原理,但是仍有一些关键的地方需要注意的,算是自己对多态的一个小结:
1. Java中除了static和final方法外,其他所有的方法都是运行时绑定的。在我另外一篇文章中说到private方法都被隐式指定为final的,因此final的方法不会在运行时绑定。当在派生类中重写基类中static、final、或private方法时,实质上是创建了一个新的方法。
2.在派生类中,对于基类中的private方法,最好采用不同的名字。
3.包含抽象方法的类叫做抽象类。注意定义里面包含这样的意思,只要类中包含一个抽象方法,该类就是抽象类。抽象类在派生中就是作为基类的角色,为不同的子类提供通用的接口。
4.对象清理的顺序和创建的顺序相反,当然前提是自己想手动清理对象,因为大家都知道Java垃圾回收器。
5.在基类的构造方法中小心调用基类中被重写的方法,这里涉及到对象初始化顺序。
6.构造方法是被隐式声明为static方法。
7.用继承表达行为间的差异,用字段表达状态上的变化。
分享到:
相关推荐
【Java复习知识点】 Java是一种广泛使用的面向对象的编程语言,具有跨平台的特性,这得益于它的“一次编写,到处运行”的理念。以下是基于标题、描述和标签内容的详细知识点总结: 1. **Java三大平台**:Java SE...
Java期末考试复习题库 Java是一种广泛应用于软件开发的高级编程语言,它具有平台独立性、对象导向、分布式、多线程、动态链接、安全性等特点。Java语言的基本结构包括变量、数据类型、运算符、控制流语句、方法、...
java 复习资料 很全 要的来java 复习资料 很全 要的来java 复习资料 很全 要的来java 复习资料 很全 要的来java 复习资料 很全 要的来java 复习资料 很全 要的来java 复习资料 很全 要的来java 复习资料 很全 要的来...
"java复习.zip"这个压缩包包含了一份全面的Java复习资源,涵盖了Java基础知识、面试笔试题、逻辑题以及各大公司的Java题目,还特别提到了SSH框架,即Struts、Spring和Hibernate这三个流行框架的综合应用。...
"Java复习题3"显然聚焦于帮助学习者巩固和深化对Java语言的理解。在这个复习题集中,我们可能会涉及众多Java的基础概念和高级特性。下面将就Java的一些核心知识点进行详细阐述。 1. **基本语法**: Java是一种静态...
core java 复习,简单的对core java 复习
这份"Java复习资料及例题源代码"是学习和备考Java相关考试的理想资源,包含了一系列经典例题和配套的源代码,对于深入理解和掌握Java编程的核心概念极其有益。 一、Java基础语法 在复习资料中,你可能会遇到关于...
Java 复习汇总.md
复习Java,首先需要理解其基本概念和技术要点。 一、Java基础知识 1. Java语言的特点: - 跨平台性:Java代码通过JVM(Java虚拟机)实现“一次编写,到处运行”。 - 面向对象:Java支持类、对象、封装、继承、...
本文主要涵盖了JAVA的一些核心知识点,适合期末复习使用。 首先,JAVA分为三大平台:JAVA ME(Java Micro Edition),主要用于嵌入式应用,如手机、智能设备等;JAVA SE(Java Standard Edition),是桌面应用程序...
1. **基础语法**:Java的基础包括变量、数据类型(如整型、浮点型、字符型和布尔型)、运算符、流程控制(if-else、switch、for、while循环)、数组和字符串。 2. **面向对象**:Java是纯面向对象的语言,涵盖类、...
java复习题JAVA复习题3
这里面由我自己总结的一些Java知识点。 同时附赠一份我学习的资料,是github上的一位大神写的,非常棒的笔记,力荐!总结了Java知识、IO、http、socket、redis、git、docker,设计层次比较全,大家可以下载看看,...
### Java考试复习资料详解 #### 一、架构模式:B/S与C/S - **B/S架构**(Browser/Server,浏览器/服务器)是一种通过Web浏览器进行访问的应用系统架构。客户端只需要一个Web浏览器即可,无需安装任何软件。所有的...
1. **基础语法**:这是学习Java的第一步,包括数据类型(如基本类型和引用类型)、变量、运算符、控制结构(如if-else、switch、for、while循环)、方法、数组等。理解这些概念对于编写任何Java程序都是至关重要的。...
Java复习资料 本文档是关于Java复习资料的总结,涵盖了Java基础知识、数据库操作、SQL语句、Oracle和SQL Server的差异、日期时间函数等方面的知识点。 一、 Java基础知识 Java是一种面向对象的编程语言,允许...
Java编程语言复习重点整理 1. **访问修饰符的区别**: - `public`:所有类都可以访问。 - `private`:仅限于在同一类内部访问。 - `protected`:同一包内的类和任何子类可以访问。 - 默认(friendly):同一包...
1. **Java基础知识**:复习题可能涵盖了Java的基础语法,如变量、数据类型、运算符、控制结构(if-else、switch、for、while等)、方法的定义和调用、类与对象的概念、封装、继承和多态等。答案解析能帮助你快速校验...
1. **Java基础语法**:包括变量、数据类型(基本类型与引用类型)、运算符、流程控制语句(if, switch, for, while等)、方法定义与调用、数组等。 2. **面向对象编程**:涉及类的定义、对象的创建、封装、继承、多...