1.如何实现在main方法执行前输出“hello word”
静态代码块在类被加载时就会被调用,且只初始化执行一次,因此可以在main()方法执行前就被调用。若子类继承父类,都存在静态语句块,会先执行父类再执行子类,当子类静态语句块执行完后,会检查父类有没有语句块,若有,执行,再执行父类的构造函数,接着是子类的语句块,构造函数。
https://www.cnblogs.com/jycboy/p/5257615.html
子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须用supper关键子来调用父类带参数的构造方法,否则编译不能通过。
2.java中&与&&的区别
& 不管怎样,都会执行"&"符号左右两边的判断条件
&& 只有当符号"&&"左边程序为true后,才会执行符号"&&"右边的判断条件。
二者的共同点是只有当左右两边都为true时,条件成立。
3.什么是构造函数,它的特点
一种特殊的方法,主要用来创建对象时初始化对象。
有如下特点:
1.构造函数方法名和类名一致。2.构造函数没有返回值,void也不行。3.一个类可以有多个构造函数。
4.每个类都有一个默认的构造方法 5.在创建新对象时,自动调用构造函数。
4.super关键字
子类不会获得父类的构造器,但子类构造器里可以调用父类构造器初始化代码。
1.1 在一个构造器中调用另一个重载的构造器,使用this调用来完成。如下代码段:
public class Component { private String name; private int age; public Component(String name) { this.name = name; } public Component(String name,int age) { this(name); this.age = age; } }
在子类构造器中调用父类构造器使用super调用来完成。
下面程序中定义了Base类和Sub类,其中Sub类是Base类的子类,程序在Sub类的构造器中super来调用Base构造器的初始代码。
class Creature { public Creature() { System.out.println("Creature无参数的构造器"); } } class Animal extends Creature { public Animal(String name) { System.out.println("Animal带一个参数的构造器," + "该动物的name为" + name); } public Animal(String name , int age) { //使用this调用同一个重载的构造器 this(name); System.out.println("Animal带两个参数的构造器," + "其age为" + age); } } public class Wolf extends Animal { public Wolf() { //显式调用父类有两个参数的构造器 super("灰太狼", 3); System.out.println("Wolf无参数的构造器"); } public static void main(String[] args) { new Wolf(); } }