继承2

继承后的特点
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)了父类中的方法,这时候访问的是子类中的方法,他会先从子类中找,如果找到则输出的是子类中的方法(就近原则)

  • 继承后的构造方法
    构造方法的定义和作用 :
  1. 构造方法的名字和类名要保持一致,所以子类是无法继承父类当中的构造方法
  2. 构造方法的作用一般是用来初始化成员变量,所以子类在初始化的过程中,必须先执行父类中的初始化动作。子列的构造方法当中默认有一个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();//先调用父类当中的无参构造方法,然后子类的无参方法被调用
    }
}
原文地址:https://www.cnblogs.com/zk2020/p/14027889.html