其实我们发现子类继承父类操作很简单,如果要是去深入的研究下会发现,实例化过程并非是我们看到的那样,我们就以代码举例来说明: 问大家,以下代码执行会输出什么呢? package com.oop; /** * 定义动物对象 * @author Liudeli * */ class Animal { public Animal() { System.out.println("Animal()--构造函数"); } } /** * 定义狗对象 * @author Liudeli * */ cl…
子父类中的构造函数的特点: 1.在子类构造对象时,发现,访问子类构造函数时,父类构造函数也运行了.   原因是:在子类的构造函数中第一行有一个默认的隐式语句. super(); 类似于this();   this();调用的是本类的构造函数 2.子类构造函数默认调用的是父类中的空参数构造函数,如果需要调用父类中带参数的构造函数,可以在子类构造函数中定义.如:super(6); 3.如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用父类中哪个构造函数. 4.同时子类构造…
Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员被static修饰之后,多了一种访问方式,除了可以被对象调用之外还可以被雷鸣直接调用(类名.静态成员) static关键字,修饰变量,只保存最后一个值,立即改,立即用. static关键字是一个修饰符说白了意思就是用static修饰成员以后,这个成员就变成大家共有的了 ,任意一个对象可以调用它并且也…
一.变量(属性)    this 代表当前对象的引用 this.变量 首先在本类中找所需要的这个变量,如果没有找到再去父类中找    super 用于访问当前对象的父类成员 super.变量 直接在父类里面找 二.函数(方法)    当子类中出现父类中一样的函数时,当子类对象调用该函数,    运行的是子类中的函数,如同父类中的函数被覆盖了一样,    这种情况就是函数的另一种特性:重写(覆盖) 注意:        1.子类成员覆盖父类成员时,必须要保证子类的权限大于等于父类,才可以覆盖,否则…
子类默认继承父类的属性和方法,但不会继承父类的构造器,而是在子类被实例化时会默认调用父类的空构造器.子类在创建的时候会调用自己的空构造器,并在空构造器会隐式调用super(),即父类的空构造器.如果父类的构造器被重载,那么子类中的构造器也必须初始化父类的构造器,否则会报编译错误.当然,只要父类中显示定义了空构造器,子类中就不必初始化父类的构造器.例如:父类Person.java package myjava; public class Person { private String name;…
1.从缓存中.优先从一级缓存中拿,有则返回. 如果没有,则从二级缓存中获取,有则返回. 如果二级缓存中拿不到,则从三级缓存中拿,能拿到,则从三级缓存中删除,移到二级缓存. 如果三级缓存也没有,则返回null. 2. 如果是单例模式, 则走createBean 的流程,进行bean对象的实例化. 2.1 获取到该beanDefinition对应的字节码对象. 2.2 prepareMethodOverrides. 检查beanDefinition对象的每一个methodOverride的对象.如果…
在普通的单线程程序中,捕获异常只需要通过try ... catch ... finally ...代码块就可以了.那么,在并发情况下,比如在父线程中启动了子线程,如何正确捕获子线程中的异常,从而进行相应的处理呢? 常见错误 也许有人会觉得,很简单嘛,直接在父线程启动子线程的地方try ... catch一把就可以了,其实这是不对的. 原因分析 让我们回忆一下Runnable接口的run方法的完整签名,因为没有标识throws语句,所以方法是不会抛出checked异常的.至于RuntimeExce…
两个类分别如下: <pre name="code" class="java">package Demo2; import java.util.*; class Demo2 { private static ArrayList<String> a = new ArrayList<String>(); public static void main(String[] args) { a.add("String0")…
引自:https://www.cnblogs.com/yangfanexp/p/7594557.html 在普通的单线程程序中,捕获异常只需要通过try ... catch ... finally ...代码块就可以了.那么,在并发情况下,比如在父线程中启动了子线程,如何正确捕获子线程中的异常,从而进行相应的处理呢? 常见错误 也许有人会觉得,很简单嘛,直接在父线程启动子线程的地方try ... catch一把就可以了,其实这是不对的. 原因分析 让我们回忆一下Runnable接口的run方法的…
一.使用原因 父类声明,子类实例化,既可以使用子类强大的功能,又可以抽取父类的共性. 二.使用要点 1.父类类型的引用可以调用父类中定义的所有属性和方法: 2.父类中方法只有在是父类中定义而在子类中没有重写的情况下,才可以被父类类型的引用调用: 3.对于父类中定义的非静态方法,如果子类中重写了该方法(动态绑定:重写后的方法),那么父类类型的引用将会调用子类中的这个方法,静态方法还是调用父类的(静态绑定:静态方法): 4.父类和子类声明同名的成员变量,获得的是父类的成员变量(静态绑定:成员变量):…