Java SE05_面向对象笔记
面向对象
1 什么是面向对象
面向对象编程:OOP(Object Oriented Programming),OO(面向对象)
思想:
- 线性思维
- 物以类聚,分类的思维模式
本质:以类的方式组织代码,以对象的组织(封装)数据。
抽象
三大特性:
- 封装
- 继承
- 多态
对象是具体的事物。类是抽象的,是对对象的抽象。类是对象的模板。
2 创建与初始化对象
使用new关键字创建对象,使用new,本质是在调用构造器
创建对象的同时,除了分配内存空间外,还会进行对象属性的默认初始化,以及类中构造器的调用。默认初始化:
- 数字:0,0.0
- char:u0000,也就是0
- boolean:false
- 其他引用类型:null
类中的构造器也称为构造方法,是在进行创建对象的时候必须调用的,并且构造器有以下特点:
- 必须和类的名字相同
- 必须没有返回类型,也不能写void
一个类即使什么都不写,也会存在一个方法,叫做构造方法。
注意点:一旦定义了有参构造,如果想使用无参构造,就必须显示定义无参构造。
快捷键:Alt+Insert
:添加 getter、setter 方法
Constructor可以生成有参构造
3 封装
程序设计要求:高类聚,低耦合。
高类聚:类的内部数据操作细节自己完成,不允许外部干涉。
低耦合:仅暴露少量的方法给外部使用。
属性私有:private(私有),get/set
封装的好处:
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 提高系统的可维护性
4 继承
继承的本质是对某一批类的抽象。
继承关键字extends
:扩展。子类是父类的扩展,私有的东西无法被继承,子类的无参构造第一行是父类的无参构造调用super()
。
继承是类和类之间的一种关系,其他关系:依赖,组合,聚合等。
继承关系的两个类。一个为子类(派生类),一个为父类(基类)。
修饰符:
- public:公共
- protected:受保护的
- default:默认,不用写
- private:私有的
快捷键:Ctrl+H:查看接口的实现类和继承关系
在Java中,所有的类,都默认直接或间接继承Object。
4.1 super
super的注意点:
- super调用父类的构造方法,必须在构造方法的第一个。
- super必须只能出现在子类的方法或者构造方法中。
- super和this不能同时调用构造方法。
super和this的区别:
-
代表的对象不同
this:本身调用者这个对象
super:代表父类对象
-
前置条件不同
this:没有继承也可以使用
super:只能在继承调条件下才可以使用
-
构造方法不同
this():本类的构造
super():父类的构造
5 重写
需要有继承关系,子类重写父类的方法!
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大但不能缩小:public>protected>default>private
- 抛出的异常:范围可以缩小,但不能扩大
静态的方法和非静态的方法
- 静态的方法和非静态的方法区别很大!
- 静态方法:方法的调用只和左边,定义的数据类型有关
- 非静态:重写
为什么需要重写:父类的功能,子类不一定需要,或者不一定满足!
快捷键:Alt+Insert-Override Methods
6 多态
定义:即同一方法可以根据发送对象的不同而采用多种不同的行为方式。
多态存在的条件:
- 有继承关系
- 子类重写父类的方法
- 父类引用指向子类对象
对象能执行的方法主要看对象左边定义的类型。
被static,final,private修饰的方法不能被继承,重写,也就不能实现多态。
7 instanceof和类型转换
作用:判断两个类是否存在父子关系。A instanceof B,A是否是B的父类
8 代码块加载顺序
静态代码块>匿名代码块>构造函数
import static java.lang.Math.random; //静态导入包
{}//匿名代码块:可以用来赋初始值,每次创建类都会执行,构造方法也一样
static {}//静态代码块,只执行一次
9 抽象类
关键字:abstract
抽象类的所有方法,继承(extends)了它的子类,都必须要实现它的方法,除非它也是抽象类。
特点:
- 不能new抽象类,只能靠子类去实现。约束!
- 抽象类里面可以写普通方法
- 抽象方法必须在抽象类中
总结:
- 存在构造器,不能使用new关键字
- 存在的意义:抽象出来,提高开发效率
- 单继承
10 接口
声明类的关键字是class,声明接口的关键字是interface
接口里面的属性都是public static final的常量
接口里面的方法都是public abstract的,不用写修饰符,只写返回值。
实现接口的关键字:implements,实现了接口的类,就必须重写接口中的方法。
总结:
- 定义一些方法,让不同的人实现
- 多继承,可以implements多个接口
- 不能被实例化,没有构造方法
- 必须要重写接口中的方法
11 内部类
定义:就是在一个类的内部再定义一个类
一个Java类中可以由多个class类,但是只能有一个public class类
分类:
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类
总结
- 重载就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
- 重写就是在子类方法重写父类方法,重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。
- 多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现