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

java面向对象与异常

时间:2025-01-18 16:29:07浏览次数:8  
标签: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

相关文章