首页 > 编程语言 >java面向对象与异常

java面向对象与异常

时间:2025-01-18 16:29:07浏览次数:3  
标签:java 对象 子类 方法 面向对象 静态方法 父类 异常

面向对象

初识面向对象

方法回顾和加深

对象的创建和分析

面向对象的三大特性

抽象类和接口

内部类和oop实战


初识面向对象

面向过程&面向对象:
在这里插入图片描述

类=属性+方法

对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍需要面向过程的思路去处理

面向对象编程(oop)

面向对象编程本质:以类的方式组织代码,以对象的形式封装数据

抽象

三大特性:封装,继承,多态
在这里插入图片描述

方法回顾和加深
在这里插入图片描述

方法的定义:

  1. 修饰符
  2. 返回类型
  3. break:跳出switch,结束循环。return:结束一个方法,返回一个结果
  4. 方法名:注意规范,见名知意
  5. 参数列表(参数类型,参数名)
  6. 异常抛出

方法的调用:

(静态方法和非静态方法)非静态方法直接通过类名调用(类名.方法)

非静态方法要首先实例化一个对象再进行调用(对象名.方法)

  1. 静态方法

  2. 非静态方法、

  3. 形参和实参

  4. 值传递和引用传递(对象)
    在这里插入图片描述

  5. this关键字

类与对象的关系

类是一种抽象的数据类型,它是对某一种事物的整体描述/定义
在这里插入图片描述

对象是对抽象概念的具体实例
在这里插入图片描述

使用new关键字来创建对象
在这里插入图片描述

在这里插入图片描述

一个类即使什么都不写,也会存在一个方法,叫做构造方法(构造器),方法名与类名相同,且没有返回类型

构造方法的作用:使用new关键字本质上在调用构造器,实例化一些初始值
在这里插入图片描述

alrt+insert可以快捷生成构造器

注意点:定义了一个有参构造后,如果想使用无参构造,必须显示的定义一个无参构造

创建对象内存分析
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

封装

程序设计追求“高内聚,低耦合”,高内聚:内部数据操作细节自己完成,不允许干涉。低耦合:仅暴露少量方法给外部使用

封装:禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问。
在这里插入图片描述

将属性通过private关键字私有化,提供一些可以操作这些属性的方法,public的get,set方法
在这里插入图片描述

在这里插入图片描述

继承

本质上是对某一批类的抽象,是类与类之间的关系,两个类之间一个是子类,一个是父类,子类继承父类,使用关键字extends

子类是父类的扩展,子类继承父类会拥有父类的全部方法

在java中,所有的类都默认直接或间接继承object类,java中只有单继承

(一个儿子只能有一个爸爸,而一个爸爸可以有多个儿子)

私有的东西无法被继承

super:

  1. super调用父类的构造方法,必须在构造方法的第一个
  2. super必须只能出现在子类的方法或者构造方法之中
  3. super和this不能同时调用构造方法

super和this的区别:
在这里插入图片描述

方法重写

重写都是方法的重写,与属性无关

静态方法:方法的调用之和左边定义的数据类型有关
在这里插入图片描述

重写:需要有继承关系,子类重写父类的方法

  1. 方法名必须相同
  2. 参数列表必须相同
  3. 修饰符:范围可以扩大但不能缩小;public>protected>default>private
  4. 抛出异常:范围可以缩小但不能扩大

多态:同一个方法可以根据发送对象的不同而采用多种不同的行为方式

一个对象的实际类型是确定的,但可以指向对象的引用类型有很多

一个对象的实际类型可以是确定的,但其指向的引用类型可以不确定

多态存在的条件:
在这里插入图片描述
在这里插入图片描述

对象能执行哪些方法,主要看对象左边的类型

父类可以指向子类,但不能调用子类独有的方法

子类能调用的方法都是自己的或者继承父类的

注意点:
在这里插入图片描述

不能重写的方法:
在这里插入图片描述

instance of和类型转换

instance of用于判断类对象属于何种类,判断对象与类之间的关系

x instance of y x对象是否与y类存在父子关系,若存在则为true,否则为false
在这里插入图片描述

类型之间的转换:

父类>子类 父类转换为子类(向下转型)高转低强制转换

子类转换为父类(向上转型)自动转换,可能丢失自己的一些方法

studen类中存在父类person不具有的go方法
在这里插入图片描述
方便方法的调用,减少重复代码

static关键字

staic可修饰属性与方法,修饰的属性称为静态属性,方法为静态方法

静态变量可以直接通过类名.属性进行使用,而非静态变量需要实列化对象,通过对象.属性进行使用

静态方法与非静态方法同样如此,静态变量与静态方法随类一起加载,而非静态变量与方法随对象一起加载
在这里插入图片描述

1,2,3为其输出的向后顺序,同时静态代码块只执行一次,随类加载
在这里插入图片描述

如果一个类被final修饰,则不能被其他类继承】

抽象类

abstract可以用来修饰方法也可以用来修饰类,如果修饰方法,则该方法是抽象方法,修饰类则为抽象类

抽象类中可以没有抽象方法,但有抽象方法的类一定要声明为抽象类
在这里插入图片描述
java的类是单继承,接口key多继承

接口
在这里插入图片描述

声明接口的关键字为interface

接口中的所有定义的方法其实都是公共抽象的 public abstract,接口中所定义的属性是公共静态常量 public static final

接口都需要有实现类,通过implements来实现,实现了接口的类,必须重写接口中的所有方法
在这里插入图片描述
接口的作用:
在这里插入图片描述

内部类

内部类:在一个类的内部在定义一个类,分为成员内部类,静态内部类,局部内部类,匿名内部类
在这里插入图片描述

内部类可以获得外部类的私有属性私有方法

静态内部类无法访问非静态属性

一个java类中可以有多个class类,但只能有一个public class类

在方法里面写类,称为局部内部类
在这里插入图片描述
匿名内部类:没有名字初始化类,不用将实列保存在变量中
在这里插入图片描述

异常机制

异常

异常体系结构

java异常处理机制

处理异常

自定义异常


异常
在这里插入图片描述
三种类型的异常:
在这里插入图片描述

异常体系结构
在这里插入图片描述

error类对象是由java虚拟机生成并抛出的,大多数错误与代码编写者所执行的操作无关
在这里插入图片描述
exception通常是由程序逻辑错误引起的

抛出异常和捕获异常

异常处理的五个关键字:try,catch,finally,throw,throws

try用来监控该代码块中可能发生的异常

catch捕获异常,要声明异常种类,如果异常种类与声明中的一致,则执行catch中的代码块,同时可以有多个catch块,用来捕捉多个异常,最大的异常要写在最后面,防止前面的异常不会被捕获(从小到大)

final用于处理善后工作,都会被执行
在这里插入图片描述
在这里插入图片描述

try catch区域必须要有,finally可以不要,finally常用于处理善后工作,如io流或者资源的关闭

throw用于主动抛出异常,一般用在方法中

throws用于在方法上处理异常,方法中处理不了该异常
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

标签:java,对象,子类,方法,面向对象,静态方法,父类,异常
From: https://blog.csdn.net/qq_74146366/article/details/145186200

相关文章

  • 你不知道的javascript-14(Symbol,map,set)
    1.Symbol(生成唯一标识符)Symbol是JavaScript中的一种基本数据类型,它表示唯一的、不可变的值。以下是关于Symbol的详细说明:constsym1=Symbol();constsym2=Symbol("description");使用Symbol()函数可以创建一个新的Symbol。每个Symbol都是唯一的,即使它们的......
  • 【Java毕设项目】基于SpringBoot的医护人员排班系统
    【Java毕设项目】基于SpringBoot的医护人员排班系统springboot002-基于springboot的医护人员排班系统文章目录【Java毕设项目】基于SpringBoot的医护人员排班系统一、内容包括二、需求分析三、运行环境四、功能模块五、效果图展示六、获取源码一、内容包括包括有......
  • 你不知道的javascript-13(var的接替者let与const)
    1.let与const的基本使用在ES5中我们声明变量都是使用的var(variable)关键字,从ES6开始新增了两个关键字可以声明变量:let、constlet、const在其他编程语言中都是有的,所以也并不是新鲜的关键字但是let、const确确实实给JavaScript带来一些不一样的东西从使用角度来说,只是在原......
  • Java面试题汇总-集合篇+JUC篇
    其他面试题Java面试题汇总-Java基础篇(共50道题)-CSDN博客Java集合目录1.请你说说java中hashmap的原理2.HashMap的put(key,value)和get(key)过程3.在使用hashmap时,有哪些提升性能的技巧?4.什么是哈希碰撞?怎么解决哈希碰撞?5.谈一谈hashmap的扩容操作?6.hashmap的初始容量......
  • 面向对象
    类的组成组成部分描述类声明定义类的名称、访问修饰符和继承关系(如extends、implements)成员变量类中的变量,用于存储对象的状态。可以是实例变量或静态变量构造方法用于创建类的对象并初始化对象的状态。可以有多个构造方法(重载)成员方法类中的方法,用于定义......
  • leetcode——分割两个字符串得到一个回文字符串(java)
    给你两个字符串a和b,它们长度相同。请你选择一个下标,将两个字符串都在相同的下标分割开。由a可以得到两个字符串:aprefix和asuffix,满足a=aprefix+asuffix,同理,由b可以得到两个字符串bprefix和bsuffix,满足b=bprefix+bsuffix。请你判断aprefix+bsu......
  • java流程控制及其循环语句
    用户交互Scanner(IO流跟电脑打交道)基础语法:Scanners=newScanner(System.in);//表示系统数据输入​Scanners=newScanner(System.out);//表示系统数据输出​scanner.close:表示关闭数据流通过Scanner类的n......
  • 科普文:算法和数据结构系列【高效的字符串检索结构:字典树Trie树原理、应用及其java示例
    概叙科普文:算法和数据结构系列【算法和数据结构概叙】-CSDN博客科普文:算法和数据结构系列【非线性数据结构:树Tree和堆Heap的原理、应用、以及java实现】-CSDN博客科普文:算法和数据结构系列【树:4叉树、N叉树】_动态维护四叉树-CSDN博客科普文:算法和数据结构系列【二叉树总结......
  • NB!一款基于java开发的漏洞检测工具,集合了泛微、用友、大华、海康、致远、红帆、万户
    1、工具介绍基于https://github.com/yhy0/ExpDemo-JavaFX上添加poc2、工具下载链接:工具下载:工具下载3、新增检测漏洞用友NC-Cloud系统接口getStaffInfo存在SQL注入漏洞用友U8-CloudReleaseRepMngAction存在SQL注入漏洞复现(CNVD-2024-33023)用友U8-CRM系统getDeptName......
  • Java使用sql查询mongodb
    概述MongoDB是一种NoSQL数据库,它使用文档存储数据,与传统的关系型数据库不同。尽管MongoDB不使用SQL进行查询,但有时在熟悉SQL语法的团队中,能够使用SQL查询MongoDB可以大大简化开发工作。本文将详细介绍如何在Java中使用SQL查询MongoDB。工具与依赖要实现这一......