继承后的特点
1.成员方法重名
2.成员方法不重名
- 不重名
public class Fu{
int cum;
public void show(){
System.out.println("Fu类中的show方法在执行");
System.out.println("Fu类中的成员变量num"+num);
}
}
public class Zi extends Fu{
int num;
public void show2(){
System.out.println("Zi类中的show方法在执行");
System.out.println("Zi类中的成员变量num"+num);
}
}
public class Text{
public static void main(String[] args){
//构建对象
Zi zi=new Zi();
zi.show();//调用的是父类当中的show()方法
zi.show2();//调用子类当中的show2()方法
}
}
总结:
如果子类父类中出现不重名的成员方法,这时的调用时没有【任何影响的】,对象调用方法时,会现在子类中查找又没有对应的方法,若子类中存在该方法那么就执行子类中的方法,若子类中存在该方法那么会执行父类当中的成员方法。
- 重名
public class Fu{
int num=10;
public void show(){
System.out.println("fu show()方法在执行");
System.out.println("fu 成员变量 num"+num);
}
}
public class Zi extends Fu{
int num=20;
public void show(){
System.out.println("zi show()方法在执行");
System.out.println("zi 成员变量 num"+num);
}
}
public class Text{
public static void main(String[] args){
//先构建对象
Zi zi=new Zi();
//调用show();
//子类中有show() 方法。执行的时是重写后的show()方法
zi.show(); //zi show() 方法在执行 20;
}
}
总结
如果过子类和父类的方法重名则认为是子类重写(Override)了父类中的方法,这时候访问的是子类中的方法,他会先从子类中找,如果找到则输出的是子类中的方法(就近原则)
- 继承后的构造方法
构造方法的定义和作用 :
- 构造方法的名字和类名要保持一致,所以子类是无法继承父类当中的构造方法
- 构造方法的作用一般是用来初始化成员变量,所以子类在初始化的过程中,必须先执行父类中的初始化动作。子列的构造方法当中默认有一个super()方法,表示调用父类的构造方法,弗列的成员变量初始化之后,才可以给子类使用
public class Fu{
private int n;
public Fu(){
System.out.println("Fu()类无参构造方比调用");
}
}
public class Zi extends Fu{
public Zi(){
//super()调用父类中的构造方 隐式
System.out.println("zi()方法被掉");
}
}
public class Text{
public static void main(Strintg[] args){
Zi zi= new Zi();//先调用父类当中的无参构造方法,然后子类的无参方法被调用
}
}