Java小细节(四)

上集 (Java小细节(三)

多态(一个对象对应着不同类型)

  1. 体现:父类或者接口的引用指向其子类的对象。
  2. 好处:限定功能使用,提高了代码的扩展性,前期定义的代码可以使用。
  3. 弊端:前期定义的内容不能使用(调用)后期子类的特有内容。(向上转型,子类对象提升成了父类对象类型)无法调用子类特有功能。
  4. 前提:
    1,必须有关系,继承,实现。
    2,要有覆盖(只发生在函数上)。
  5. 想使用子类特有功能。向下转型:子类 z=(子类)a;
  6. a instanceof A;//用于判断对象的具体类型。只能用于引用数据类型判断。

内部类(相当于外部类成员)

  1. Outer.Inner in=new Outer().new Inner();//直接访问外部类中内部类的成员。
  2. Outer.Inner in=new Outer.Inner();//如果内部类是静态的,相当于一个外部类。
  3. Outer.Inner.function();//如果内部类是静态的,内部类的成员也是静态的。
  4. 如果内部类中定义了静态成员,该内部类也必须是静态的。
  5. 内部类可以直接访问外部类的成员。以为内部类持有了外部类引用。外部类名.this在这里插入图片描述
  6. 局部内部类只能访问局部中被final修饰的局部变量。
    在这里插入图片描述
  7. 匿名内部类
    匿名子类重写父类方法:在这里插入图片描述
  8. 匿名内部类应用。
    在这里插入图片描述
  9. 在这里插入图片描述

对象初始化过程

  1. 1,成员变量初始化。
    2,构造函数进栈。
    3,(有父类的话)父类构造函数初始化。
    4,显示初始化。(成员变量赋值等)
    5,构造代码块初始化。
    6,构造函数继续初始化。

异常

  1. 最终问题(不正常情况)分城两类。
    Throwable:该体系的特点就在于Throwable及其所有的子类都具有可抛性。(throws、throw)
    1,一般不可处理。Error
    特点:是由jvm抛出的严重性问题。这种问题发生一般不针对性处理。直接修改程序。
    2,可以处理的。Exception
  2. 注意:让一个自定义类成为异常类,必须继承异常体系,因为只有成为异常体系的子类才具有可抛性,才能被两个关键字(throw、throws)所操作。
  3. 异常的分类:
    1,编译时检测异常:只要是Exception和其子类,除了特殊子类RuntimeException体系。
    这种问题一旦出现,希望在编译时就进行检测,让这种问题有对应的处理方式。这样的问题都可以针对性的处理。
    2,编译时不检测异常(运行时异常):Exception中的RuntimeException和其子类。
    这种问题的发生,无法让功能继续,运算无法进行,更多的是因为调用者的原因或者引发了内部状态改变导致的。这种问题一般不处理,直接编译通过,在运行时,让调用者调用的程序强制停止,让调用者对代码进行修正。
  4. throws和throw的区别
    1,throws使用在函数上用于声明。
    throw使用在函数内。
    2,throws抛出的是异常类,可以抛出多个,用逗号隔开。
    throw抛出的是异常对象。
  5. 多catch情况下存在父类Exception要放在最下面。
    在这里插入图片描述
  6. 异常处理的原则:
    1,函数内容如果抛出需要检测的异常,那么函数上必须要声明。否则必须在函数内用try catch捕捉,否则编译失败。
    2,如果调用到了声明异常的函数,要么try catch要么throws,否则编译失败。
    3,功能内容可以解决,用catch。
    解决不了,用throws告诉调用者,由调用者解决。
    4,一个功能如果抛出了多个异常,那么调用时,必须有对应多个catch进行针对性的处理。内部有几个需要检测的异常,就抛几个异常,对应几个catch。
  7. finally一定会被执行(除了System.exit(0)//关闭虚拟机)。通常用于关闭(释放)资源。
  8. 没对异常进行处理,就要声明异常。在这里插入图片描述
  9. 异常的注意事项:
    1,子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的覆盖方法只能抛出父类的异常或者该异常的子类。
    2,如果父类方法抛出多个异常,那么子类的覆盖方法只能抛出父类异常的子集。
    3,如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛出异常,只能捕捉异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值