多态:
前提1:是继承
前提2:要有方法的重写
父类引用指向子类对象
#######################################################
多态的实现方式
方式一:重写:
这个内容已经在上一章节详细讲过,就不再阐述,详细可见:Java 重写(Override)与重载(Overload)。
方式二:接口
1.生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。
2.java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。具体可以看 java接口 这一章节的内容。
方式三:抽象类和抽象方法
#######################################################
idea—>FIND…–>快速搜索功能模块.
编译看左边,运行看右边
解释:
必须要父类定义这个方法,才能通过编译,编译时把多态对象看做是父类类型.
必须要子类重写这个方法,才能满足多态,运行时实际干活的是子类.
多态对象可以调用重写后的方法.
多态对象把自己看做是父类类型,不能使用子类的特有方法.
创建的是子类对象,但被视作父类类型(花木兰替父从军)
#######################################################
同一个包里不能存在两个同名的类
对属性提供公共的设置与访问方式get()与set()
右键–>Generate–>Getter and Setter–>选择第一个按
shift再按↓,全选中–>回车OK
#######################################################
oop,类,对象,封装,
构造函数,构造/局部代码块,this
继承,super,重写与重载
static final ,静态代码块,代码顺序
多态
±-----------------------------------------------+
OOP_BASIC结束
±-----------------------------------------------+
#######################################################
<异常>
Throwable(异常的顶级父类):
–Error:(程序无法处理的问题)
–VirtulMachineErrorJava–虚拟机运行错误
–蓝屏等
–Exception:(我们可以编码修复的错误)
–RunTimeException–运行时异常
–IO Exception–IO异常
#######################################################
异常报错的第一行必须看完
idea–灰色提示–源码
idea–蓝色提示–自己写的部分
从底往上看
InputMismatchException输入不匹配异常.
ArithmeticException算数异常-/by zero除零,点击蓝色字体可以快速定位到
问题代码位置.
#######################################################
键盘右ctrl键左边的按钮是–鼠标右键的效果
* 异常处理方案一:异常捕获
* try{
* 可能会出现异常的代码
* }
* catch(要匹配的异常类型 异常名){
* 匹配到异常提供的解决方案
* }
* 异常处理方案二:异常抛出--自己不处理,交给别人处理
* 异常抛出的格式:在方法定义的小括号与大括号之间写:throws 异常类型
* 如果有多个异常,可以使用逗号进行分割
* ---------------最不推荐使用-------------
* 如果一个方法抛出了异常,那么谁调用这个抛出异常的方法,谁就需要处理这个异常
* 这里的处理也有两种解决方案:捕获自己解决/继续向上抛出
* 但注意: 我们一般会在main()调用之前处理掉异常
* 而不是把问题直接抛给main(),因为没人解决问题
#######################################################
shift + ctrl+上下(移动代码块的位置)
shift + alt +上下(移动代码行位置)
ctrl + alt +上下(显示屏转)
shift +上下(选择行)
Ctrl+Y 删除当前行
#######################################################
* 被abstract修饰的类是抽象类
* 如果一个类中包含了一个抽象方法,那么这个类必须被声明一个抽象类
* 抽象类对其中的资源类型不做任何要求,抽象方法必须在抽象类中
- 当一个类继承了一个抽象父类,有两种解决方案
- 1.变成抽象子类—“我也不实现,继续抽象”
- 2.变成普通子类—实现抽象父类中的所有抽象方法–“父债子偿”–不重写的话,只要继承了一个抽象方法就意味自己也要变成抽象类
#######################################################
<异常>-本次重点
编译异常:未运行代码就报错了,强制要求处理
运行时异常:运行代码才报错,可以通过编译,不强求解决
异常的解决方案:
捕获处理try-catch 自己解决
向上抛出throws–交给别人处理
不能直接把异常抛给main,因为调用main()是JVM,没人解决了
<抽象>
抽象类是被abstract修饰的类
抽象类对其中的方法不做限制,全普/全抽/半普半抽
抽象类不可以实例化-创建对象
如果一个子类继承了一个抽象父类,有两种解决方案:继续抽象/实现抽象父类的所有抽象方法,变成普通子类
抽象方法
抽象方法是被abstract修饰的方法,抽象方法没有方法体{},以;结束.
#######################################################
super()–>必须放在子类的构造函数第一行,调用指定的父类
构函数;如果没有手动写super,则默认调用super(无参),
此时如果父类没有无参构造,而子类对象实例化时传了参,则报编译错误!
所有的class都有一个默认的父类object
super只能写在子类里,调用父类的资源
animal a1 =new Dog();向上造型
[is…a…]关系:小类型 是 一个 大类型
重写:父子间,参数列表相同
重载:一个类中,参数列表不同
#######################################################
±------------------------+
extends继承,@override重写,
±------------------------+
静态代码块>>开辟类的空间>>构造代码块