Java子父类初始化顺序,及重写方法后的访问修饰符,异常抛出
2017-08-27 16:52
309 查看
当一个类被初始化的时候,发现它的父类尚未初始化,会先去初始化父类;
重写方法的访问修饰符只能扩大或同等,不能缩小
重写方法的异常抛出只能越是精确的异常,而不能抛出更大范围的异常,精确的程度可以直到没有异常抛出。
上面的代码运行得到如下的输出内容
重写方法的访问修饰符只能扩大或同等,不能缩小
重写方法的异常抛出只能越是精确的异常,而不能抛出更大范围的异常,精确的程度可以直到没有异常抛出。
/** * @author Cherish * @version 1.0 * @date 2017/8/27 16:32 */ public class Main { public static void main(String[] args) { B a = new B(); A b = new B("ssss"); } static class A { static { System.out.print("static A,"); } public A(){ System.out.print("construct A,"); } protected void aa() throws RuntimeException { System.out.println("aa"); } } static class B extends A {// 若父类尚未初始化,得首先初始化父类 static { System.out.print("static B,"); } public B(){ System.out.print("construct B,"); } public B(String s) { System.out.print("construct B, s = " + s); } // 访问修饰符只能是扩大 public void aa() {// 抛异常,是越精确(这里如果抛出Exception是错误的),直至可以没有异常 System.out.println("true = " + true); } } }
上面的代码运行得到如下的输出内容
static A,static B,construct A,construct B,construct A,construct B, s = ssss
相关文章推荐
- 关于Java中方法重写的访问修饰符和返回值类型的限制
- Java第11次作业:什么是继承?继承的好处?什么是覆写?super()?构造代码块?子父类初始化顺序? 抽象类能用final声明吗?final关键字声明类 方法 变量以及全局常量?抽象类的构造方法?
- 深度理解JAVA本身的构造器及子父类构造方法的初始化顺序
- java中的继承,继承中方法的重写,继承的初始化顺序,final关键字,super关键字
- java继承并重写方法时抛出一样的异常或不抛异常,既不能多也不能少,范围既不能打也不能小
- java中继承期间父子类型的初始化顺序以及重写方法的调用规则
- 深度理解JAVA本身的构造器及子父类构造方法的初始化顺序
- java中重写方法必须抛出和原方法一样的异常或者不抛异常
- java中访问修饰符的使用,方法重写定义,final修饰符,布局的特点等等:
- 异常父类为什么java中子类重写父类的方法时声明抛出异常不能比父类范围大
- 为什么java中子类重写父类的方法时声明抛出异常不能比父类范围大
- JAVA第七节-继承,继承中方法重写,继承的初始化顺序,final关键字,super关键字,object类
- 深度理解JAVA本身的构造器及子父类构造方法的初始化顺序
- Java面试【抛出异常】【重写方法权限】
- Java 中子类重写父类的方法时声明抛出异常不能比父类范围大
- java中重写方法必须抛出和原方法一样的异常或者不抛异常
- Java知识(访问修饰符、方法重写和方法重载的区别以及java抽象)
- 类、对象、继承、封装、多态、方法的重载和重写、Java的访问修饰符与其它关键字
- Java:深度理解JAVA本身的构造器及子父类构造方法的初始化顺序
- Asp.Net : 捕捉和记录网站中出现的所有未处理错误,抛出详细的页面来源和访问ip,调用的接口方法及异常实例(记事本日志,系统日志及数据库日志)