2021年1月22~23日 Java面向对象相关2
Java总允许在方法的后面使用throws关键字对外声明该方法有可能发生异常,加了throws关键字的方法在调用时必须进行异常处理

============================
instanceof 必须是在一个继承体系中的类,或者类和接口、才能编译成功:


=========================
向下转型优先级小于 . 所以向下转型后直接调用需要加括号:
((Student)p).study();
==============================
匿名内部类:临时定义某一指定类型的子类,定义后即刻创建刚刚定义的这个子类的对象。注意区分内部匿名类和匿名对象
匿名类一定是建立在有接口或者是有可继承类的前提下,无法原地造一个无关的类。

=============================
异常也是类,error是错误,非常严重,exception(编译期异常)是可以解决的,error和exception都是throwable的子类
RuntimeException运行期异常
================================
private 修饰构造方法,是为了不让创建对象
=====================================
构造代码块与静态代码块
构造代码块每次创建对象执行一次,静态代码块在该类第一次创建对象或者使用静态变量,方法时执行一次:
执行顺序:静态代码块、构造代码块、构造方法
测试:
首先建一个Car类:包含静态代码块,构造代码块,构造函数:

测试1:

测试2:

由此可见静态代码块只要在第一次使用到类时,就会执行。
============================================================
this()必须放在构造方法代码第一行


super()必须放在子类构造方法代码第一行
this和super不能在同一个构造方法中同时显式调用,所以可以间接调用:
===================
重写后的方法也可以加final的
==================
static修饰的成员变量,不进堆、栈,而是在方法区
========================
static进方法区时也有默认值:

================
在多态中,父类引用变量指向子类对象,static成员方法会执行父类中的,而不是子类中的。

因为在这里a还是一个Animal类型的变量,而static是属于该类的,子类和父类不是一个类,所以会执行父类中的方法

浙公网安备 33010602011771号