20230427

news/2025/2/12 18:14:44/

多态

动态编译:类型、可扩展性

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

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


多态存在的条件:

  1. 有继承关系

  2. 子类重写父类方法

    有些方法不可以重写:

    1. static 方法属于类,它不属于实例
    2. final:常量
    3. private方法
  3. 父类引用指向子类对象 Father f1 = new Son();


注意:

  1. 多态是方法的多态,属性没有多态
  2. 父类和子类有联系 类型转换异常 如果两者没有联系 ClassCastException!
  3. 存在条件

instanceof和类型转换

System.out.println(x instanceof y)

x和y之间是否存在父子关系,否则编译报错

Person X = new Student()
//左边的Person是引用类型,右边Student是实际类型
X instanceof Y
//X引用类型是否和Y有继承关系,否则编译报错;如果实际类型是Y的父类,就是false

注意:

  1. 父类引用子类的对象
  2. 子类转换父类,向上转型;父类引用子类,向下转型

抽象类

abstract修饰符可以用来修饰方法也可以修饰类,如果装饰方法,那么该方法就是抽象类;如果修饰类,那么该类就是抽象类。

抽象类中可以写普通方法,抽象方法必须在抽象类中。

抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。约束~

抽象方法,只有方法的声明,没有方法的实现,它是用来让子类的实现的。

子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。

接口的定义和实现

普通类:只有具体的实现

抽象类:具体实现和规定都有

接口:只有规范!自己无法写方法~

接口就是规范,定义了一组规则。接口的本质就是契约。


接口的作用:

  1. 约束
  2. 定义一些方法,可以让不同的人实现
  3. 方法 public abstract
  4. 常量 public static final
  5. 接口不能被实例化,接口中没有构造方法
  6. 接口可以实现多个 implements
  7. 实现接口必须要重写接口中的方法

N种内部类

内部类就是在一个类的内部再定义一个类。

1.成员内部类

2.静态内部类

3.局部内部类

4.匿名内部类

Error和Exception

什么是异常:

  1. 异常指程序运行中出现的不期而至的各种状况
  2. 异常发生再程序运行期间,它影响了正常的程序执行流程

RuntimeException 运行时异常:

ArrayIndexOutOfBoundsException 数组下标越界

NullPointerException 空指针异常

ArithmeticException 算术异常

MissingResourceException 丢失资源

ClassNotFountException 找不到类异常

这些异常一般由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

Error和Excception的区别:

Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常的时候,java虚拟机(JVM)一般会终止线程;Exception通常情况是可以被程序处理的,并且再程序中应该尽可能的去处理这些异常。

异常捕获和抛出

异常处理五个关键字

try\catch\finally\throw\throws

快捷键:Ctrl+Alt+T

自定义异常

使用java内置的异常类可以描述在编程时出现的大部分异常情况。用户自定义异常类,只需要继承Exception类就可以。

步骤:

  1. 创建自定义异常类
  2. 在方法中通过throw关键字抛出异常
  3. 如果当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续下一步
  4. 在出现异常方法的调用者中捕获并处理异常。

实际应用中的总结

  1. 处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
  2. 在多重catch块后面,可以加一个catch(Exception)来处理可能被遗漏的异常
  3. 对于不确定的代码,也可以加上try-catch,处理潜在的异常
  4. 尽量去处理异常,切忌知识简单调用printStackTrace()去打印输出
  5. 尽量添加finally语句块去释放占用的资源

http://www.ppmy.cn/news/191639.html

相关文章

hdu2602

/* 分析: 温习一下背包,两分钟敲完,比以前敲得好看多啦~~~ 2012-07-10 */ #include"stdio.h" #include"string.h"struct A {int val;int v; }E[1011];int max(int a,int b) {return a>b?a:b; }int main() {int T;int…

S3C2410驱动分析之LCD驱动

作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 内核版本:2.6.36 源码路径:drivers/video/s3c2410fb.c 本文分析S3C2410的LCD驱动,该驱动程序基于Framebuffer机制。 一、相关数据结构 首先,我们来介绍一下基…

使用32驱动1602液晶屏

此处我用的是正点原子F3的精英板,去驱动普中51开发板带的配件1602液晶屏,由于没有直接对应的接口,于是只能用飞线大法了… 连接实物图如下: 1602液晶屏引脚说明: 32对应引脚连接: PDout(6) //读/写选择-…

22.4.6

1,二叉树四种遍历,2,string 去重(去空格)3,根据二叉树后序和中序,求先序;4,已知二叉树后序和中序,求层序;5,蒙德里安的梦想(状态压缩dp&#xff0…

win10+vs2017环境中编译64位的openh264.dll库文件

一、环境配置 1、安装vs2017。 2、安装MinGW。这一步的坑是:在安装mingw之后还得单独下载msys压缩包,解压到mingw目录下 将存放make.exe的路径C:\MinGW\msys\bin配置在系统path参数里面,否则会找不到make命令。 3、安装nasm。 下载nas…

linux查看硬盘插槽_linux如何查看硬件信息CPU,内存,硬盘

1、 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2 //两个物理CPU **uniq命令:删除重复行;wc –l命令:统计行数** 1.2 查看CPU核数 # cat /proc/cpuinfo | grep "cpu cores" | un…

华大HC32A460 系列介绍(一)

[T1、华大HC32A460系列产品特性 ARM Cortex-M4 32bit MCUFPU,250DMIPS,up to 512KB Flash,192KB SRAM,USB FS(Device/Host), 14 Timers,2 ADCs,1 PGA,3 CMPs&…

LCD驱动芯片(IC)-VK2C系列(VK2C21/22/23/24)多用于燃气表;水表/电气表等,具抗干扰及低功耗特性

VK2C系列,是点阵式存储映射的LCD驱动器,单片机可通过I2C接口配置显示参数和读写显示数据,也可通过指令进入省电模式。其高抗干扰/低功耗的特性适用于水电气表及工控仪表类。 VK2C21 特点: • 工作电压 2.4-5.5V • 内置32 kHz RC…