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

Java面向对象 二

系列文章目录

Java面向对象 一-CSDN博客

Java面向对象 三-CSDN博客


目录

系列文章目录

前言

一、继承

1. 继承的概念

2. 父类和子类成员的访问

3.子类的构造方法

3. this 和 super 

4. 初始化

5. final 关键字

二、多态

1. 多态的实现条件

2. 向上转型

3. 方法重写

4. 动态绑定

5. 重写和重载的区别

6. 向下转型

7. 多态的思想


前言

java 是一门面向对象的编程语言,本文介绍 java 面向对象编程的基础内容。


一、继承

1. 继承的概念

面向对象的思想中有继承的概念,继承允许保持原有类的特性,并在这个基础上扩展,增加新功能;

通过继承产生的类叫做子类/派生类,被继承的类叫做父类/基类;

继承的目的是对子类的共性抽取,实现代码复用;

java 中使用 extends 关键字来实现继承;

2. 父类和子类成员的访问

成员变量的访问:

this 可以访问父类的成员变量,也可以访问子类的成员变量;super 只能访问父类的;

当子类和父类中有同名的成员变量,子类访问时优先访问自己的;如果一定要访问父类的,就需要用到关键字 super;

成员方法的访问

this 可以访问子类和父类的成员方法,super 只能访问父类的;

当子类和父类具有同名方法,如果参数列表不同可以构成重载,子类可根据参数列表访问对应方法;如果参数列表相同,则优先访问子类的方法;如果要访问父类的方法,也需要使用 super 关键字进行访问;

3.子类的构造方法

子类继承父类后,需要先构造父类,再构造子类本身;

具体的实现方式:在子类的构造方法中,使用 super 调用父类的构造方法;

调用父类的构造方法目的是初始化从父类继承过来的成员变量,再调用自己的构造方法初始化新增加的成员变量;

使用 super 调用父类的构造方法时,只能写在第一行;在子类的构造方法只能出现一次,并且不能和 this 同时出现。

3. this 和 super 

相同点:

this 和 super 都是关键字;

都只能在类的非静态方法中使用,访问非静态成员变量和方法;

在构造方法中调用时,都只能出现在第一行,并且 this 和 super 不能同时存在;

不同点:

this 可以访问父类和子类的成员变量和方法,super 只能在子类中访问从父类继承下来的成员变量和方法;

在构造方法中,this() 调用本类的构造方法,super() 调用父类的构造方法,两种调用不能同时在构造方法中出现;

如果存在继承关系,构造方法中一定会出现 super() 调用,用户不写编译器也会增加;this() 如果用户不写,则没有;

4. 初始化

如果父类和子类都存在静态代码块和实例代码块,初始化的时候代码的执行顺序为:

父类静态代码块,子类静态代码块,父类实例代码块,父类构造方法,子类实例代码块,子类构造方法;

原因:

静态代码块在类加载的时候就会执行,实例代码块在创建对象的时候才会执行,因此是静态代码块执行顺序优先于实例代码块;

创建对象的时候子类需要先帮父类进行构造,而实例代码块的执行顺序优先于构造方法,因此 new 对象的时候,一定会先执行父类的实例代码块,再执行构造方法,接下来才是子类的实例代码块和构造方法;

5. final 关键字

final 修饰的类不能被继承,被 final 修饰的类称为密封类,例如 String;

二、多态

1. 多态的实现条件

必须在继承体系下,实现了向上转型;

子类对父类的方法进行重写;

使用父类的引用调用重写的方法;

2. 向上转型

使用父类 new 一个子类的对象,例如:Animal animal = new Dog(),这时候 Dog 就发生了向上转型;

通过方法传参:子类引用传给方法中父类参数的位置,也会发生向上转型;

通过返回值返回:返回子类对象,子类对象也会发生向上转型;

3. 方法重写

子类存在和父类方法名,参数列表,返回值(可以是父子类关系)都相同的方法,那么子类就重写了父类的方法;

注意事项:

被 private,static,final 修饰的方法,不能发生重写;

子类的访问权限一定要大于等于父类的访问权限;

构造方法不能重写;

4. 动态绑定

静态绑定:编译时,确定了调用哪个方法;

动态绑定:运行时,发现子类重写了父类的方法,就调用子类重写的方法;

发生向上转型后,通过父类引用调用重写的方法,代码运行时会执行子类重写的方法,就叫动态绑定;

5. 重写和重载的区别

子类中存在和父类方法名,参数列表,返回值都相同的方法,就发生了方法的重写;

同一个类中,存在方法名相同,参数列表不同的方法,就发生了发方的重载;

重写:方法名,参数列表必须相同,返回值相同或者为父子类关系,访问权限不能降低;

重载:方法名相同,参数列表必须不同,返回值可以不同,权限可以改变;

6. 向下转型

向下转型:把父类对象转化为子类对象,不一定能转型成功;

因此在转换之前一定要用关键字 instanceof 判断对象发生向上转型前是否为子类对象;

7. 多态的思想

 通过父类引用不同的子类的对象,调用同一个重写的方法,表现得行为不一样,这种思想叫做多态;

多态适用于方法,不适用于属性和构造方法;

相关文章:

  • ABP VNext + Webhook:订阅与异步回调
  • HTTP 与 HTTPS
  • 【实战教程】基于 React Flow 搭建智能体组件:从环境配置到核心节点开发指南
  • Tool-Star新突破!RL赋能LLM多工具协同推理,性能全面超越基线方法
  • 符合Python风格的对象(覆盖类属性)
  • 从 0 到 1:Spring Boot 与 Spring AI 深度实战(基于深度求索 DeepSeek)
  • 怎么判断股指期货空头增仓和多头增仓呢?
  • leetcode3-无重复字符的最长子串
  • (1-6-1)Java 集合
  • JavaWeb:SpringBootAOP切面实现统计方法耗时和源码解析
  • Linux相关概念和易错知识点(41)(UDP、TCP报头结构)
  • uniapp中懒加载图片组件的封装与应用
  • 【前端设计模式讲解】工厂模式
  • Java高频面试之并发编程-20
  • Ethan的日记5/25
  • python打卡day36
  • 十二、【鸿蒙 NEXT】如何使用系统api实现视频压缩
  • uni-app学习笔记十一--vu3 watch和watchEffect侦听
  • Lua 脚本在 Redis 中的运用-23(Lua 脚本语法教程)
  • 考虑安全稳定约束的优化调度综述
  • 阜宁县住房和城乡建设局网站/站长统计性宝app
  • 上海最专业的网站建设公司/seo3的空间构型
  • 做信息网站需要什么/情感营销
  • 成品网站/网站seo哪家做的好
  • 网站好坏标准/外贸快车
  • 赣州建网站/网站推广优化设计方案