当前位置: 首页 > news >正文

学习日记-day12-5.21

完成目标:

1.进行java上半段学习的总结

java小结(一)-CSDN博客

2.学习java课程下半段

知识点:

1.继承

知识点

核心内容

重点

继承概念

从生活实例(财产继承)引入编程中的继承概念,子类自动获得父类特性

继承与拥有的区别(能继承私有成员但不能使用)

继承优势

减少代码重复(如teacher/manager类共享name/age/work),提升代码复用性

继承vs重复定义的取舍考量

继承语法

使用extends关键字实现继承(如class Teacher extends Employee)

继承语句的书写规范

继承权限

子类可继承父类所有成员(包括私有),但只能使用非私有成员

继承权与使用权的区分(关键考点)

设计思想

继承是OOP三大特征之一,属于代码架构设计理念

何时使用继承的判定标准

术语对照

父类(超类/基类) vs 子类(派生类)

不同术语的对应关系

构造方法

构造方法不能继承(必须与类名绑定)

继承体系中的构造方法调用顺序

2.成员变量 成员方法

知识点

核心内容

重点

成员变量访问特点

继承体系下,看等号左边是谁,先调用谁中的成员变量

成员变量访问与对象类型(父类或子类)的关系

不重名情况下,子类对象可访问父类成员变量

区分子类特有成员与继承成员

重名情况下,子类对象访问的是子类自己的成员变量

父类与子类成员变量重名时的访问规则

成员方法访问特点

继承体系下,看new的是谁,先调用谁中的方法

成员方法访问与对象实例化类型的关系

不重名情况下,子类对象可调用继承的父类方法

区分子类特有方法与继承方法

重名情况下,子类对象调用的是子类自己的方法

父类与子类方法重名时的调用规则

多态中的访问特点

父类引用指向子类对象时,成员变量看等号左边,成员方法看new的是谁

多态情况下成员变量与方法的访问规则

成员变量访问的是父类中的,成员方法调用的是子类中的(如果子类有重写)

多态中成员变量与方法访问的特殊性

3.方法重写

知识点

核心内容

重点

方法重写的定义

子类中存在与父类方法名、参数列表完全相同的方法

易错点:返回值类型需兼容(协变返回类型)

方法重写的检测

使用@Override注解,编译不报错即为合法重写

重点:注解报错说明方法签名不匹配父类

重写与重载的区别

重写需继承关系,重载仅需同名不同参

对比维度:重写覆盖父类行为,重载是同类多态

多态与继承的关系

多态前提是继承,成员方法调用规则与继承一致

核心逻辑:new子类对象时优先调用子类重写方法

方法重写注意事项

知识点

核心内容

重点

方法重写的权限要求

子类重写父类方法时,权限修饰符必须大于等于父类权限(public > protected > 默认 > private)

默认权限不能显式写出default关键字,否则报错

访问权限修饰符等级

Java四种权限修饰符从大到小:public → protected → 默认(不写) → private

默认权限的实际表现与protected的区别

方法重写的基本规则

方法名和参数列表必须完全相同

与方法重载的对比(参数列表不同)

不可重写的方法类型

私有方法(private)、构造方法、静态方法(static)

静态方法加@Override注解会报错

返回值类型规则

子类方法返回值类型可以是父类方法返回类型的子类

父类返回父类型时子类可返回子类型,反之则报错

实际开发惯例

通常保持方法名、参数列表、返回类型完全一致

特殊返回值类型仅出现在测试/笔试场景

4.继承中构造方法的特点

知识点

核心内容

重点

继承中的构造方法特点

创建子类对象时,会先初始化父类(默认调用父类无参构造)

super()的隐式调用规则(不写则JVM自动添加,手动写必须在第一行)

super关键字作用

代表父类引用,super()表示调用父类无参构造

与this()调用构造方法的优先级冲突

构造方法执行顺序

父类无参构造 → 子类构造方法(无论子类使用有参/无参构造)

子类构造方法首行必隐含super()(若父类无无参构造需显式指定)

代码示例逻辑

通过Father和Son类演示构造方法调用链

无参构造被注释后,有参构造仍隐式调用父类无参构造

5.super

知识点

核心内容

重点

super关键字

代表父类引用,用于调用父类成员(构造方法/变量/方法)

必须在子类构造方法第一行使用

super调用构造方法

1. super()调用无参构造; 2. super(参数)调用有参构造

不写super()时默认调用父类无参构造

super调用成员变量

super.变量名明确调用父类变量(避免子类同名变量覆盖)

与this关键字的就近原则区别

super调用成员方法

super.方法名(参数)强制调用父类方法(即使子类存在重写)

方法重写时的调用优先级问题

this与super对比

this指向当前对象,super指向父类对象

构造方法中this()和super()不能共存

继承中的构造链

子类构造必先调用父类构造(显式/隐式)

父类没有无参构造时必须显式调用super(参数)

6.this

知识点

核心内容

重点

this关键字的作用

代表当前对象,用于区分成员变量与局部变量、调用当前对象的成员(变量/方法/构造器)

重名变量区分原则(就近优先局部变量); 构造器调用限制(必须在第一行)

this调用构造器

通过this()调用无参构造,this(参数)调用有参构造

与super冲突(不可同时手写); 物理行限制(分号后不算第一行)

this调用成员

this.变量名访问成员变量; this.方法名()调用成员方法

非静态上下文(静态方法中不可用); 冗余场景(同类非静态方法可直接调用)

this与super对比

均需在构造器首行使用; super指向父类,this指向当前实例

优先级冲突(无法共存); 隐式规则(未写super时默认存在)

代码演示案例

通过Person类演示: - 构造器互相调用; - 输出成员变量(this.num); - 方法调用(this.method01())

就近原则验证(局部变量num=20覆盖成员变量); 构造链触发(new Person(10)触发双构造)

7.继承特点

知识点

核心内容

重点

继承的单继承特性

一个子类只能有一个直接父类(如class A extends B合法,但class A extends B, C非法)

“单继承”与“多继承”的语法区别(Java不支持多继承)

继承的多层继承特性

支持链式继承(如A→B→C,C可视为A的“祖父类”)

多层继承中,子类可调用祖父类的非私有成员

父类与子类数量关系

一个父类可被多个子类继承(如A extends C和B extends C,A/B为“兄弟类”)

与单继承规则对比:“一父多子”合法,“一子多父”非法

构造方法的继承限制

构造方法不能继承,也不能重写

子类需通过super()调用父类构造方法

私有方法的继承与重写

私有方法可继承但不能被重写(@Override会报错)

易混淆点:私有方法在子类中可定义同名方法,但非重写

静态方法的继承与重写

静态方法可继承(子类可直接调用)但不能重写(@Override报错)

静态方法绑定类而非对象,子类定义同名静态方法实为隐藏父类方法

8.父类私有属性赋值

知识点

核心内容

重点

父类私有属性的继承问题

子类无法直接使用父类的私有属性

(如 private String name 和 private int age),但可通过 getter/setter方法或构造方法间接访问。

私有属性继承的权限限制; - super调用父类构造方法的底层逻辑

通过getter/setter间接访问

子类通过父类提供的非私有方法

(如 getName()/setAge())操作私有属性,实现“曲线救国”。

方法继承与属性继承的区别; - 封装性保护与间接调用的平衡

通过构造方法间接赋值

子类构造方法中通过 super(name, age) 调用父类有参构造,间接为父类私有属性赋值。

super关键字的执行顺序; - 构造方法链的调用逻辑

代码示例对比

- 方法调用:teacher.setName("涛哥") + teacher.getAge(); - 构造方法:Manager("金莲", 24) → 触发父类 Employee(name, age) 赋值

两种方式的适用场景; - 间接访问的性能影响

9.抽象

知识点

核心内容

重点

抽象概念定义

抽象指“说不清道不明”的共性特征,需通过抽取共性方法形成父类

抽象与具体的区分标准

抽象方法

无方法体的方法(abstract修饰),需子类强制重写实现

抽象方法必须有子类实现,否则编译报错

抽象类

包含抽象方法的类必须为抽象类(abstract class)

抽象类可无抽象方法,但抽象方法必在抽象类中

继承与抽象设计

通过父类(如图形类)定义标准,子类(三角形/圆形)实现差异化逻辑

继承为减少重复代码,抽象为强制统一接口

抽象类实例化限制

抽象类不能直接new对象,需通过子类实例调用重写方法

实例化报错的常见场景

抽象设计思想

将共性功能(如计算面积、eat())抽象为父类标准,子类按需实现

抽象类作为“事物标准”的实践意义

代码示例对比

图形类(抽象父类) vs 三角形类(子类实现底×高÷2)

不同子类方法体的差异实现

http://www.xdnf.cn/news/576613.html

相关文章:

  • 牛客网 NC16407 题解:托米航空公司的座位安排问题
  • 操作系统 第四章 -1
  • 链表-反转链表
  • JUC并发编程(下)
  • P1090 [NOIP 2004 提高组] 合并果子
  • SpringBoot3集成Oauth2.1——3access_token使用
  • 大模型如何助力数学可视化?
  • 47道ES67高频题整理(附答案背诵版)
  • LVS_DR集群的基本原理和相关配置
  • 算法总结:双指针技巧
  • XXE由浅入深
  • SOC-ESP32S3部分:4-参数配置可视化menuconfig
  • 啤酒游戏与系统思考
  • RESTful API设计:从原则到Gin实现
  • 【AI模型学习】ESM2
  • 部署rsync远程同步+inotify监控
  • 前端学习(6)—— WebAPI部分案例
  • 前端面经-WebGL/threeJS
  • 《Saliency Attack: Towards Imperceptible Black-box Adversarial Attack》论文分享(侵删)
  • Spring AI 1.0 快速入门
  • NVIDIA GPU 性能调优与诊断完全指南
  • ConcurrentHashMap导致的死锁事故
  • 环境搭建
  • 根据Spring官方文档,三分钟完成Springboot项目集成Spring AI
  • sqli-labs第十七关——POST注入点
  • Spring Boot整合Redis
  • RestTemplate 发送的字段第二个大写字母变成小写的问题探究
  • 9-码蹄集600题基础python篇
  • leetcode 螺旋矩阵 java
  • 5-码蹄集600题基础python篇