一、instanceof关键字
功能:检测父子类的关系,如果两个类之间有直接关系,那么结果会为true,否则为false。
例子:假设一个类为student,另一个类为person,person中有类分支teacher,则:
System.out.println(student instanceof person); // true
System.out.println(object instanceof person); // true
System.out.println(object instanceof student); // true
System.out.println(teacher instanceof person); // false
System.out.println(object instanceof teacher); //false
System.out.println(student instanceof teacher); //编译出错
如以上结果显示,当两个类之间没有继承关系的时候,会出现编译出错,同时,如果当 一个类为分支类时,他与object类之间也是没有关系的,所以会为false。
二、static关键字
1、声明为static的变量可以直接通过类名调用,而非静态变量则不能通过类名调用,只能通过对象名调用
2、声明static关键字后的执行顺序:
声明static关键字后的执行顺序则是最优先执行的,但是只会执行一次
3、静态导入包
静态导入包之后,在下面的语句不用再写Math关键字
三、抽象类
关键字:abstract
public abstract class action{ } //这就是一个抽象类
抽象类的所有方法,继承了它的子类,都必须要实现它的方法,除非子类本身就为abstract类
抽象类的特点:
1.不能new这个抽象类,只能靠子类去实现它,约束
2.一旦类中有抽象方法,那么该类必须为抽象类,但当该类为抽象类时,该类中可以写普通类
四、接口
接口的本质就是契约,制定好后都必须遵守
关键字:interface
接口中不能写方法实现,在接口中所有的定义其实都是抽象的,public abstract(默认就有)
所以在前面我们就可以不需要写public abstract
直接void add(String name);就行了
实现了接口的类,就必须重写接口中的方法。
实现的关键字:implements
同时,利用接口可以实现多继承。
总结:接口的作用
1.接口实际是一个约束
2.在接口中可以定义一些方法,让不同的人去实现
3.接口中方法默认有 public abstract
4. 在接口中所有定义的属性默认为public static final
5.接口不能被实例化,同时在接口中是没有构造方法的
6.通过implements关键字可以实现多个接口
7.必须要重写接口中的方法
五、内部类
在一个类当中再写一个类,那么这个类被称之为内部类
如何实例化内部类
我们可以通过外部类点操作来实例化内部类如下图
内部类可以获得外部类的私有属性(private)
一个java类中可以有多个class类,但只能有一个public class
class也可以写在方法中
没有名字进行初始化类,不用将实例保存到变量中
我们平常的new 对象是,Apple apple =new Apple();
然而现在没有名字则是,new Apple().eat();
此操作成为匿名内部类
六、异常
异常类分为两大类,错误Error和异常Exception
异常分布图
通过try建立监控区域代码块
catch(可以写想要捕获的异常类型)捕获异常,finally处理善后工作(始终会执行/finally可以不用)
捕获多个异常,要从小到大开始
主动抛出异常(一般在方法中使用)
throw(在方法中)
throws(在方法上)