记录平时使用java时发现的一些细节问题。
1、抽象类中是可以有静态方法的,在被子类继承后可以通过子类的实例化对象调用;也可以直接通过抽象类和子类的类名来调用,就像其他的静态方法一样。同样的静态变量也可以使用相同的方法访问。
实例:
package classTest;
abstract class Person0 {
public static String name = "jack";
public static void sayHello() {
System.out.println("hello");
}
}
class Javaer extends Person0{
}
public class Demo {
public static void main(String[] agrs) {
Person0.sayHello();
Javaer.sayHello();
Javaer a = new Javaer();
a.sayHello();
System.out.println(Person0.name);
System.out.println(Javaer.name);
System.out.println(a.name);
}
}
结果:
hello
hello
hello
jack
jack
jack
2、子类实例化时,默认调用父类的无参构造方法(不管子类的构造器有没有参数,因为子类继承的是父类的属性和方法,只调用父类的无参构造器就可以继承父类的属性和方法,因此不会调用父类的有参构造器),再调用子类的有参/无参构造器。
示例:
package classTest;
class Father {
public Father(){
System.out.println("父类的无参构造方法");
}
public Father(int a ) {
System.err.println("父类的有参构造方法"+a);
}
}
class Son extends Father{
public Son() {
System.out.println("子类中的无参构造方法");
}
public Son(int a ) {
System.out.println("子类中的有参构造方法"+a);
}
}
public class TestExecute {
public static void main(String[] args) {
Son s = new Son();
System.out.println("---------------");
Son a = new Son(5);
}
}
结果:
父类的无参构造方法
子类中的无参构造方法
---------------
父类的无参构造方法
子类中的有参构造方法5