java面向对象个人学习笔记

本文详细介绍了Java的面向对象特性,包括封装、继承和多态。讲解了类与对象的概念,以及如何通过private关键字实现封装。此外,讨论了构造方法、构造代码块和局部代码块的作用。重点阐述了继承的特征,如单继承和子类如何调用父类构造。同时,解释了this和super关键字的用途,以及重载和重写的区别。深入探讨了static关键字和final关键字的应用,以及静态代码块、构造代码块和局部代码块的执行顺序。最后,阐释了多态的概念及其重要性,并简要提及了异常处理和抽象类与接口的相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.面向对象

1.1面向对象三大特征
  1. 封装: 隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。
  2. 继承: 子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法,提高代码复用率
  3. 多态: 多态同一个行为具有多个不同表现形式或形态的能力。可以把不同的子类对象都当作父类来看,屏蔽不同子类对象之间的差异,统一调用标准。
1.2 类和对象
  1. 类:Java语言最基本单位就是类。类是创建对象的模板,它描述一类对象的行为和状态。
  2. 对象:对象是类具体的实现,对象的状态用来描述对象的基本特征,对象的行为用来描述对象的功能。

2.封装

通过private关键字(权限修饰符)来修饰成员变量/成员方法,被修饰的成员就实现了私有化,访问权限只能在本类中访问。

如何访问私有资源?

  1. 成员变量:通过创建公共的get/set方法
  2. 成员方法:把私有方法放在公共方法里供外界调用

3.构造方法

  1. 定义:构造方法是一种特殊的方法,与类同名且没有返回值类型的方法,当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。
  2. 形式:修饰符 方法名([参数列表]){代码…}
  3. 执行时机:创建对象时立即执行
  4. 类中默认存在无参构造,同一类中手动定义任何构造都会覆盖默认的无参构造

4.构造代码块、局部代码块

构造代码块:

  1. 位置: 类里方法外
  2. 作用: 抽取构造方法中的共性代码
  3. 执行时机: 每次调用构造方法前都会调用构造代码块

局部代码块:

  1. 位置: 方法里
  2. 作用: 控制变量的作用范围

5.继承

继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。
在这里插入图片描述

5.1继承的特征
  1. 继承关系是传递的。
  2. Java只支持单继承
  3. 继承提供了软件复用功能。
  4. 子类不继承父类的构造方法,只是调用,如果父类中没有提供无参构造,子类可以通过super来调用父类其他的含参构造

6.this和super

  1. This代表本类对象的引用
  2. super代表父类对象的引用
  3. this可以在两个变量名相同时,用于区分成员变量和局部变量
  4. this 可以在本类的构造方法之间调用,位置必须是第一条语句,但不能相互调用,会死循环
  5. super是发生了继承关系以后,子类如果想用父类的功能,可以通过super调用

7.重载Overload与重写Override

  1. 重载: 是指在一个类中的现象,是指一个类中有很多同名的方法,但是方法的参数列表不同
  2. 重载的意义: 是为了方便外界对方法进行调用,什么样的参数程序都可以找到对应的方法来执行,体现的是程序的灵活性
  3. 重写: 是指发生了继承关系以后(两个类),子类去修改父类原有的功能
    语法规则:子类的方法签名(返回值类型 方法名(参数列表) )与父类一致
    重写方法的修饰符: 子类权限 >= 父类的权限
  4. 重写的意义:是在不修改源码的前提下,进行功能的修改和拓展
    (OCP原则:面向修改关闭,面向拓展开放)

8.static

  1. 随着类的加载而加载,优先于对象加载
  2. 只加载一次,就会一直存在,不再开辟新空间, 直到类消失才一起消失
  3. 静态资源也叫做类资源,全局唯一,被全局所有对象共享
  4. 可以直接被类名调用
  5. 静态只能调用静态

9.final

  1. final可以修饰类,方法,成员变量
  2. 被final修饰的类,不能被继承
  3. 被final修饰的方法,不能被重写
  4. 被final修饰的变量是个常量,值不能被改变

10. 静态代码块、构造代码块、局部代码块

  1. 静态代码块:在类里方法外被static修饰的代码块,类加载时就加载,并且只被加载一次
  2. 构造代码块:在类里方法外的代码块,创建对象时会自动调用,每次创建对象都会被调用,提取共性
  3. 局部代码块:方法里的代码块,限制局部变量的范围
  4. 执行顺序:静态代码块 --> 构造代码块 --> 构造方法 --> 局部代码块(调用所在方法时执行)

11.多态

多态同一个行为具有多个不同表现形式或形态的能力。可以把不同的子类对象都当作父类来看,进而屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,统一调用标准。

多态的前提有3点:

  1. 继承
  2. 方法的重写
  3. 父类引用 指向子类实现

总结:

  1. 多态中编译看左边,运行看右边
  2. 多态不能使用子类特有的方法
  3. 成员变量使用的是父类的
  4. 成员方法使用的是父类的声明,子类的实现
  5. 静态成员随着类的加载而加载,谁调用就返回谁的

12.异常

异常的顶级父类为Throwable,Throwable包含 Error 和 Exception,Error 和 Exception 是平级。
异常的处理方式有两种:向上抛出和捕获异常
如果方法抛出异常,那么谁调用这个方法,就需要解决这个方法抛出的异常

13.抽象类

抽象类:被abstract关键字修饰的类
抽象方法:被abstract关键字修饰且只有方法声明,没有方法体

总结:

  1. 如果类中有抽象方法,那么该类必须定义为一个抽象类
  2. 抽象类中可以没有抽象方法
  3. 子类继承了抽象类以后,要么还是一个抽象类,要么就把父类的所有抽象方法都实现(重写)
  4. 抽象类不可以被创建对象(实例化)
  5. abstract不可以和private(子类无法重写)、static(存在加载顺序问题)、final(无法重写)一起使用

14.接口interface

总结:

  1. 接口中的方法全部都是抽象方法
  2. 接口和接口之间可以多继承,接口和类之间可以多实现
  3. 接口中没有构造方法,默认调用Object的无参构造
  4. 接口中没有成员变量,都是静态常量(默认拼接public static final)
  5. 接口中的方法,默认就都是抽象的(默认拼接public abstract)

抽象类与接口的区别:

  1. 抽象类是一个特殊的类,抽象类中可以包含没有方法体的方法(抽象方法)
    接口可以理解成一个特殊的抽象类,特殊在,接口里的都是抽象方法,没有普通方法
  2. 接口会为方法自动拼接public abstract,还会为变量自动拼接public final static
  3. 抽象类可以有构造方法–用来给子类创建对象,接口中没有构造方法
  4. 抽象类和接口都不能实例化(创建对象)
  5. 接口可继承接口,并可多继承接口,但类只能单继承
  6. 抽象方法只能声明,不能实现,接口是设计的结果 ,抽象类是重构的结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值