-
子类继承父类们所有的东西(但不能直接访问private成员)
-
Java所有类都继承自java.lang.Object类
-
Java所有的类都是单根继承
-
子类构造函数默认第一句话都会区调用父类的构造函数
例如:
public class father {
public void f1(){
System.out.println("hello");
}
public static class Son extends father{
public static void main(String[] args) {
Son s = new Son();
s.f1();
}
}
}
子类继承了父类的方法,所以在子类中可以使用公开的f 1()方法;
-
对象也可以分成若干类,并且类别内的对象属性和方法都具有一定的共同点,将共同点提取出来,即形成了父类/基类/超类 (Parent class/Base class/Super class)
-
而其他类也自动生成为子类、派生类 (Child class/Derived class)
-
单继承原则:每个类都只能继承一个类
-
如果不写extends,Java类都默认继承java.lang.Object类
-
Java所有类从java.lang.Object开始,构建出一个类型继承树
-
Object类里面默认就有clone、equals、finalize、getClass、hashCode、toString等方法
public class Base {
private int num = 10;
public int getNum(){
return this.num;
}
}
public class Derived extends Base{
//int b = 20;
/*public int getNum(){
return this.b;
}*/
public static void main(String[] args) {
Derived fd = new Derived();
System.out.println(fd.getNum());
}
}
- 每个Java类都必须有构造函数,如果没有显式定义构造函数,Java编译器会自动为该类产生一个空的无形参构造函数,所以在main函数里定义了一个Derived的类,因为Derived类里面没有构造函数,所以编译器会产生一个空的构造函数;若Derived里面没有getNum()的方法,他便继承与Base里面的getNum()方法(子类可以通过父类的方法来访问父类的私有成员属性),在同样方法名和参数的情况下,本类的方法会比父类的方法优先级高。
public class A {
public A(){
System.out.println("11111");
}
public A(int a){
System.out.println("22222");
}
}
public class B extends A {
public B(){
//super();
System.out.println("33333");
}
public B(int a){
super(a);
System.out.println("44444");
}
public static void main(String[] args) {
B obj = new B();
System.out.println("===========");
B obj2 = new B(6);
}
}
这两个的运行结果是:
11111
33333
========
22222
44444
·每个子类的构造函数的第一句话,都默认调用父类的无参数构造函数super(),除非子类的构造函数第一句话是super,而且super语句必须放在第一条,而且一个方法中不能有两个super,如果子类中有super语句,则按照子类的super语句执行