目录
一.概述
面向对象内容的学习通常分为三条主线:面向对象的三大特征、Java的类及类的成员、面向对象中的各种关键字。因此,大家在学习面向对象的时候,可以从上述三个方向来着手学习入门。
二.面向对象学习的三条主线
(一)面向对象的四大特征(特性)
分别是:封装、继承、多态、(抽象)。
1.封装
1)封装的定义
封装通俗的理解就是:将类中的属性和方法用private关键字修饰来达到私有化的目的便是封装。此举是为了防止外部程序随意的访问内部细节导致可能会发生的数据安全问题(外部程序的随意访问可能导致类中的数据被随意篡改,从而引发数据安全问题)。于是在用private关键字修饰达到私有化保护数据安全的目的后,采用公共接口的形式来访问内部的数据。//接下来写具体的实施细节
2)基础知识点的分类
封装的章节内容大致可以分为以下几个部分展开:封装性的由来(为什么会有封装性?)、封装性是什么?、Java如何实现数据的封装?、封装性的应用(哪些方面体现了封装性?)、封装的应用之关键字的使用注意
为什么会有封装性?封装性是什么?如何实现数据的封装?封装性体现在哪(PDF的P458)?封装它们的好处在哪(封装成员变量、封装成员方法)?封装时的注意事项(关于关键字使用的注意点)?P463
3)封装性的应用
封装性的应用体现在两个方面:①成员变量(属性)的私有化、②方法的私有化。其中,成员变量的私有化的实习步骤分别是:①使用private关键字修饰成员变量②使用getXxx方法/setXxx方法访问被私有化的成员变量(实现步骤的详情,请见《Java从入门到精通JDK17》的P458-459)。
4)封装性的应用之关键字的使用注意
开发中,一般成员实例变量都习惯使用 private 修饰,再提供相应的 public 权限的 get/set 方法访问。 对于 final 的实例变量,不提供 set()方法。对于 static final 的成员变量,习惯上使用 public 修饰。
2.继承
1)继承的定义
继承通俗的理解就是:将父类中的属性、方法用extend关键字来继承给子类,并在子类中进行重写或拓展添加,即为继承。继承格式为:SonClass名 extend FatherClass名{ }。//添加一些多态的基础代码辅以说明,并在接下来写具体的实施细节
2)基础知识点分类
继承的基础知识大致分为五个部分:①什么是继承(继承的定义)、②什么时候会用继承(继承的使用场景)③继承的好处有什么、④富有继承性的程序怎么写(继承的语法格式)、⑤继承性时的细节说明。
继承嵌套的其它知识点大致分为:方法的重写(P493-495)、Object类、四种访问控制修饰符、this关键字、super关键字
注1:继承的出现,为多态的实现提供了前提。换句话说,继承是学习多态的前置知识点。
注2:在继承的环节,会嵌套有:this关键字的运用(详情可见《Java从入门到精通》this关键字的章节)
注3:在继承特性这一章节,会涉及(嵌套的知识点):this关键字、super关键字、Object类、方法的重写、四种访问控制修饰符的相关运用;且:继承是学习多态的前置知识点。
注3:重点掌握:什么时候会用继承(继承的两种表现形式、继承的使用场景):P483-485;继承性的使用细节说明:P488-P491
注4:继承的详细说明可以这篇博客:「万字图文」史上最姨母级Java继承详解
3.多态(面向对象中最重要的概念)
1)多态的定义
多态的理解:多态是建立在类已继承的前提下的,当子类已经将父类的方法重写或拓展后,将子类创建的对象赋值给父类的引用变量,并用该引用调用重写的方法时会执行在子类中已重写或拓展的方法而不是父类中的该同名方法,此即为多态的体现(并且内在蕴含着虚调用的执行机制)//添加一些多态的基础代码辅以说明,并在接下来写具体的实施细节
2)相关知识点分类
多态的知识点会涉及:多态的语法格式、使用多态需要满足的前提条件、为什么需要多态性、使用多态的好处和弊端、虚方法的调用机制、insteadOf关键字
注1:多态性是面向对象四大特性中的重点,需要深刻的理解
注2:多态性的重点:insteadOf关键字(向上转型和向下转型)、虚方法的调用机制
注3:多态性解释的不错的两篇博客(看高亮的多态性部分即可)
基础 | Java的四大基本特性_java四大基本特征-CSDN博客
JAVA基础(38) java四大特性理解(封装、继承、多态、抽象)-腾讯云开发者社区-腾讯云 (tencent.com)
4.抽象
1)抽象的定义
抽象的通俗理解:抽象性是指将现实世界的对象建模为编程语言的过程。而Java中的接口&抽象类只是实现抽象性的两种技术途径。并且,抽象性是Java中其它三种特性(封装、继承、多态)的基础。在像Java这样的面向对象的编程语言中一切都是抽象的,包括但不仅限于:接口,类,属性。
关于抽象性解释的还不错的一篇博客:java面向对象的抽象特性是什么?为什么抽象很重要?关于抽象的真相..._什么是抽象?为什么说抽象在面向对象的程序中比较重要?-CSDN博客
(二)Java类及类的成员
在Java的类及类的成员中,类的成员共分为五个部分:属性、方法、构造器、代码块、内部类。在这五个类的成员中,重点是【属性、方法、构造器】,要求细节需要都掌握(多用QA的方式自己问自己);而【代码块、内部类】只需熟悉即可。
【类的成员的概述】
根据上文【面向对象的编程思想的理解】可知,面向对象程序设计的重点在于类的设计,而类的设计其实等价于类中成员的设计(类的设计过程其实就是:由抽象化到具体化的一个过程;因此:类的定义与类的设计是一对逆过程),因此我们需要先了解:类的成员有哪些。==》于是回到【目录:(二)Java类及类的成员】
1.类的成员
1)属性
(1)属性的定义(对于属性的个人通俗理解)
属性指的是:该类事物的状态信息,属性又名成员变量。而成员变量根据关键字的不同又分为:静态变量(有static关键字)、实例变量(无static关键字)。
(2)基础知识点分类
属性知识点大致分为这两个部分:如何声明成员变量(属性)、关于变量的知识点理解。
注1:成员变量的格式一般由:修饰符+关键字+变量的数据类型+变量名组成(修饰符&关键字,可以省略,但数据类型和变量名必须有)。而Java中有多种修饰符和关键字,因此,成员变量的表现形式相对多样(但,成员变量的格式不变)。
注2:修饰符通常分为:访问修饰符、非访问修饰符。
注3:关于【修饰符、关键字】的解释可以看这篇博客:Java中的修饰符-CSDN博客
注4:关于【变量】的详细解释可以看以下博客和PDF:
1)Java变量:了解局部变量、成员变量、静态变量和常量的特点与用途
2)《Java从入门到精通_JDK17版》P407-410
2)方法
(1)方法的定义(方法的指的是什么的通俗理解)
方法指的是:该类事物要做什么操作,或者基于事物的状态能做什么,也就是用来完成某个功能操作的;方法又被称作类的成员方法。
(2)方法的基础知识点分类(三类)
【类的成员之二:方法】的知识点大致分为以下几个部分:如何声明方法(声明方法的语法格式)、如何调用方法(调用方法的语法格式)、方法使用时的注意事项。
注1:如何调用方法分为:如何调用实例方法、如何调用静态方法。实例方法的调用是对象名.方法名(),静态方法的调用格式是类名.方法名()。
注2:重点在于:熟悉如何声明方法、如何调用方法;方法使用时的注意事项了解知道有这么回事即可,必要的时候翻翻PDF就好。
注3:关于方法的推荐阅读可以看看这篇博客:
(3)方法的重点知识点(两类)
大致分为两种:方法的重载、方法的重写(方法的重写,会在面向对象的特征之继承中出现)
A.方法的重载
B.方法的重写
注1:关于方法的重载&重写,详细的讲解可以看看这篇博客
1)方法重写 Override 和方法重载 Overload 有什么区别?
2)方法的重写--PDF章节
3)构造器
(1)构造器的定义(对于构造器的通俗理解)
在Java中,构造器又名构造方法,它是一种特殊的方法。作用在于:使用new关键字来创建对象并且在创建对象时为实例变量赋值。
(2)基础知识点分类
注意分为两种:如何声明构造器、使用构造器时的注意事项。
注1:详细的讲解可以看以下阅读资料:
2)《Java从入门到精通_JDK17版》P465-467
注2:在编写方法和构造器的程序代码的环节,通常会出现this&super关键字知识点的应用(详情见this关键字&super关键字的《Java从入门到精通》的相关章节)
4)代码块(了解即可)
代码块的作用在于初始化实例变量,与构造器的作用相同;但稍有不同的是,代码块可以进行一些较为复杂的初始化操作:需要通过复杂的 计算或读取文件、或读取运行环境信息等方式才能获取的一些值。并且,代码块根据有无static关键字被分为:实例代码块(无static关键字修饰)、静态代码块(有static关键字修饰)。
注1:构造器与代码块的相同点在于:在每次的创建对象时,构造方法和实例代码块均会被调用来执行初始化成员变量的操作,但是:实例代码块的执行顺序在构造器之前。
注2:关于代码块的详细解读可看
1)Java代码初始化块:了解实例初始化和静态初始化的过程
2)《Java从入门到精通(JDK17版)》P565-568
5)内部类(了解即可)
内部类的定义就是:将一个类 A 定义在另一个类 B 里面,里面的那个类 A 就称为内部类 (InnerClass),类 B 则称为外部类(OuterClass)。与此同时,内部类分为:成员内部类、局部内部类、匿名内部类和静态内部类。
注1:关于内部类的详细解读可以阅读以下资料:
1)聊聊Java内部类:成员内部类、局部内部类、匿名内部类、静态内部类
2)《Java从入门到精通(JDK17版)》P613-619
2.Java的类
1)Object类
Object类全称实则是java.lang.Object,是Java类中的根父类,也就是其它所有类的父类(也可叫做:超类)。因此,如果一个类没有特别指定父类,那么默认则继承自 Object 类。
native关键字是怎么样的(native关键字是什么意思?)
(1)Object类的应用
Object类的具体应用是使用Object类中的方法。Object类的方法总共有11个,但重点是其中的六个,而重点中的重点是equals()方法和toString()方法。
2)接口(不是类,是一种引用数据类型)
知识点主要分为:接口的类比理解(如何理解接口、接口是什么东西、接口的定义)、使用接口的原因(为什么使用接口)、接口的语法声明格式(接口声明时的成员说明_基于JDK版本的不同)、接口的使用规则(接口的六种使用方式&每种方式使用时的注意点和使用特点)
注1:接口的定义(用interface关键字定义)与类的定义十分相似,但是接口不是类,接口是和类相同的引用数据类型。引用数据类型分为五种:数组,类,枚举,接口,注解。
3)枚举类
枚举类的知识点大致分为:枚举类的概述(包括:枚举类的定义_枚举类是什么?枚举类的通俗理解、方便理解枚举类的具体枚举类案例)、枚举类的实现方式(如何定义声明枚举类_两种定义声明枚举类的形式)、enum 方式定义枚举类的要求和特点、如何实现接口的枚举类
(1)枚举类的实现方式
枚举类的实现方式根据JDK的版本分为两种,分别是:
- 在 JDK5.0 之前,需要程序员自定义枚举类型
- 在 JDK5.0 之后,Java 支持 enum 关键字来快速定义枚举类型
其中,通过enum关键字来快速定义枚举类&如何实现接口的枚举类,是重点需要掌握的
4)注解
该章节的知识点主要分为以下几个部分:注解的概述【①.什么是注解②.注解和注释的区别(注释是写给谁看的?注解又是写给谁看的?)③.注解的重要性】、元注解是什么、自定义注解应该如何声明和使用
(1)注解的重要性
注解是一种趋势,在未来开发是基于注解的。一定程度上可以说:框架 = 注解 + 反射 + 设计模式。
5)包装类
包装类顾名思义就是:将基本的数据类型以及一些基本数据类型的辅助方法包装到类中,从而可以实现类型转换、进制转换、泛型、集合等操作。简而言之就是,将基本数据类型封装为Java对象的类(包装类也可以自己实现,自己实现的叫做自定义包装类)
注:包装类其实就是:将基本数据类型和一些基本数据类型的辅助方法封装到一起的类,叫做包装类。我们使用包装类的时候,通常都是使用这些基本数据类型的包装类的诸多好用且快捷的方法。
包装类产生的原因在于:java中的基本数据类型int,double等不是对象,无法通过向上转型获取到Object类提供的方法,而像String却可以,只因为String不是一个基本数据类型,是一个引用数据类型(全称叫做:String类(字符串类)),有了类的特点,就可以调用类中的方法,Java 才是真正的面向对象。而基本数据类型并没有类的特点因此没有对象->导致无法参与类的调用,从而导致无法参与转型,泛型,反射等过程。为了弥补这个缺陷,java提供了包装类。
包装类的知识点大致概要:包装类是什么?(包装类又被称作封装类)、包装类的拆箱和装箱分别是什么?包装类可以自动装箱和拆箱,那么自动装箱和拆箱的注意事项是什么?基本数据类型、包装类与字符串间的转换(两类:①基本数据类型->字符串类型、②字符串类型->基本数据类型;①有两种实现方式、②有三种实现方式)
注1:包装类的讲述博客Java 包装类是什么-CSDN
(三)面向对象的各种关键字
在面向对象的学习中,大致包括以下关键字需要学习:this、super、package、import、insteadOf、static、final、interface、abstract。//其中,注意尝试找出各个关键字间的联系(比如:是否可以共用、是否有相互容易混淆的关键字)
1.this关键字
this关键字的基础知识点大致可以分为三块:①this关键字是什么、②什么时候会使用this关键字(this关键字的主要使用场景有哪些)、③在不同场景使用this关键字的程序细节
注1:关于【this关键字的使用场景&不同场景下使用的程序细节】可看这三篇阅读资料:1)详解Java this与super关键字的用法与区别
2)从入门到精通(JDK17版)》P474-478
2.super关键字
super关键字的知识点大致可以分为这几个部分:super关键字的、super关键字的使用场景、super与this的辨析
1)super关键字的使用场景(三种)
super关键字的使用场景分别是:子类调用父类中被重写的方法、子类调用父类中同名的成员变量、子类构造器调用父类的构造器。《Java从入门到精通》P501-505
2)this关键字与super关键字的辨析
参考资料:《Java从入门到精通》P510-511
3.native关键字
用native关键字修饰的方法叫做native方法,又被称作本地方法。该小节的主要内容:使用native关键字的原因(为什么要用native方法)以及native方法(本地方法)的特点
4.static关键字
static关键字的知识点内容大致分为:被static修饰后的成员(静态变量、静态方法)具备哪些特点(P550)?、静态变量/静态方法的语法格式
注1:关于static关键字的阅读参考资料:《Java从入门到精通》P549-557
5.final关键字
final的中文释义是最终的、不可更改的意思,因此被final关键字修饰的目标均为最终形式、不可更改。被final修饰的变量即为常量、被final修饰的方法无法重写、被final修饰的类没有子类的同时也无法被继承。