面向对象(基础-进阶-高级)

目录

一.概述

二.面向对象学习的三条主线

(一)面向对象的四大特征(特性)

1.封装

1)封装的定义

2)基础知识点的分类

3)封装性的应用

4)封装性的应用之关键字的使用注意

2.继承

1)继承的定义

2)基础知识点分类

3.多态(面向对象中最重要的概念)

1)多态的定义

2)相关知识点分类

4.抽象

1)抽象的定义

 (二)Java类及类的成员

1.类的成员

1)属性

(1)属性的定义(对于属性的个人通俗理解)

(2)基础知识点分类

2)方法

(1)方法的定义(方法的指的是什么的通俗理解)

(2)方法的基础知识点分类(三类)

(3)方法的重点知识点(两类)

A.方法的重载

B.方法的重写

3)构造器

(1)构造器的定义(对于构造器的通俗理解)

(2)基础知识点分类

4)代码块(了解即可)

5)内部类(了解即可)

2.Java的类 

1)Object类

(1)Object类的应用

2)接口(不是类,是一种引用数据类型)

3)枚举类

(1)枚举类的实现方式

4)注解

(1)注解的重要性

5)包装类

(三)面向对象的各种关键字

1.this关键字

2.super关键字

1)super关键字的使用场景(三种)

2)this关键字与super关键字的辨析

3.native关键字

4.static关键字

5.final关键字


一.概述

面向对象内容的学习通常分为三条主线:面向对象的三大特征、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:关于方法的推荐阅读可以看看这篇博客:

1)Java方法:实例方法、静态方法与抽象方法的区别与应用

(3)方法的重点知识点(两类)

大致分为两种:方法的重载、方法的重写(方法的重写,会在面向对象的特征之继承中出现)

A.方法的重载
B.方法的重写

注1:关于方法的重载&重写,详细的讲解可以看看这篇博客

1)方法重写 Override 和方法重载 Overload 有什么区别?

2)方法的重写--PDF章节

3)构造器
(1)构造器的定义(对于构造器的通俗理解)

在Java中,构造器又名构造方法,它是一种特殊的方法。作用在于:使用new关键字来创建对象并且在创建对象时为实例变量赋值。

(2)基础知识点分类

注意分为两种:如何声明构造器、使用构造器时的注意事项。

注1:详细的讲解可以看以下阅读资料:

1)Java构造方法:打开Java对象创建之门的钥匙

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、insteadOfstatic、final、interface、abstract。//其中,注意尝试找出各个关键字间的联系(比如:是否可以共用、是否有相互容易混淆的关键字)

1.this关键字

this关键字的基础知识点大致可以分为三块:①this关键字是什么、②什么时候会使用this关键字(this关键字的主要使用场景有哪些)、③在不同场景使用this关键字的程序细节

注1:关于【this关键字的使用场景&不同场景下使用的程序细节】可看这三篇阅读资料:1)详解Java this与super关键字的用法与区别

2)从入门到精通(JDK17版)》P474-478

3)Java学习:this关键字详解 - 知乎 (zhihu.com)

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修饰的类没有子类的同时也无法被继承。

  • 37
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是第八篇笔记。 ### Python 文件操作 #### 文件操作基础 - 文件操作是指对计算机硬盘上的文件进行读写操作,Python 中的文件操作是通过内置的 `open()` 函数实现的。 - `open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)` 函数用于打开一个文件,并返回文件对象。 - `file`:要打开的文件名(包含路径)。 - `mode`:文件打开的模式,有读模式('r')、写模式('w')、追加模式('a')等。 - `buffering`:缓冲区大小,0 表示不缓冲,1 表示缓冲一行,大于 1 表示缓冲区大小,负数表示使用默认缓冲区大小。 - `encoding`:文件编码格式。 - `errors`:错误处理方式。 - `newline`:换行符。 - 文件对象的方法: - `read(size=-1)`:读取文件内容,`size` 表示读取的字节数,不指定表示读取整个文件内容。 - `readline(size=-1)`:读取文件中的一行内容,`size` 表示读取的字节数,不指定表示读取整行内容。 - `readlines(hint=-1)`:读取所有行并返回一个列表,`hint` 表示读取的字节数,不指定表示读取全部行。 - `write(string)`:将字符串写入文件。 - `writelines(sequence)`:将字符串序列写入文件,序列中每个元素都是字符串。 #### 文件操作示例 - 打开文件:`file = open('file_name', 'r')`。 - 读取文件内容:`content = file.read()`。 - 关闭文件:`file.close()`。 - 读取文件中的一行内容:`line = file.readline()`。 - 逐行读取文件内容:`for line in file: print(line)`。 - 写入文件内容:`file.write('Hello World!')`。 - 写入多行内容:`file.writelines(['Hello', 'World', '!'])`。 #### 文件操作进阶 - 使用 `with` 语句可以自动关闭文件,避免忘记关闭文件而导致的问题。 - 示例: ```python with open('file_name', 'r') as file: content = file.read() ``` - 使用 `os` 模块可以对文件进行更加高级的操作,如文件重命名、删除等。 - 示例: ```python import os os.rename('file_name', 'new_file_name') # 重命名文件 os.remove('file_name') # 删除文件 ``` ### Python 面向对象编程 #### 面向对象编程基础 - 面向对象编程是一种编程思想,将程序中的对象看作是相互交互的实体,通过它们之间的交互来完成程序的功能。 - 类(class)是面向对象编程中的一个重要概念,它是一种用户自定义的数据类型。 - 类中包含属性(特征)和方法(行为),属性指对象的数据成员,方法指对象的行为成员。 - 类的定义: ```python class ClassName: # 类属性 attribute = value # 构造函数 def __init__(self, arg1, arg2, ...): self.arg1 = arg1 self.arg2 = arg2 ... # 类方法 def method(self, arg1, arg2, ...): ... ``` - 类的实例化: ```python object_name = ClassName(arg1, arg2, ...) ``` - 对象的属性和方法: ```python object_name.attribute # 访问对象的属性 object_name.method(arg1, arg2, ...) # 调用对象的方法 ``` #### 面向对象编程示例 - 示例:定义一个 `Rectangle` 类,实现矩形的面积和周长计算。 ```python class Rectangle: # 类属性 name = 'Rectangle' # 构造函数 def __init__(self, width, height): self.width = width self.height = height # 类方法 def area(self): return self.width * self.height def perimeter(self): return 2 * (self.width + self.height) ``` - 使用示例: ```python rectangle = Rectangle(3, 4) print(rectangle.name) # 输出 'Rectangle' print(rectangle.area()) # 输出 12 print(rectangle.perimeter()) # 输出 14 ``` ### 总结 本篇笔记介绍了 Python 中的文件操作和面向对象编程基础,包括文件操作函数的使用、类的定义、对象的实例化和属性、方法的访问等。了解和掌握这些内容可以帮助我们更好地进行 Python 编程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值