我是靠谱客的博主 清秀航空,最近开发中收集的这篇文章主要介绍Java中继承与构造方法的关系、成员方法的关系,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

子类中所有构造方法默认都会访问父类中空参数的构造方法。

         例如下面这个例子:

       

class
Father {
public Father(){
System.out.println("Father的无参构造方法");
}
}
class Son extends Father{
public Son(){
System.out.println("Son的无参构造方法");
}
}
public class jicheng_biduan {
public static void main(String[] args) {
Son son = new Son();
}
}

运行结果:

由运行结果我们可以看出最后运行的结果Father类中的无参构造方法也被打印出来了,但是我们main函数中并没有声明Father对象,按道理来说,不应该出现Father类中的构造方法,为什么呢?

原因是:因为子类会继承父类的非私有数据,可能也会使用父类中的数据,所以子类初始化之前,一定要完成父类数据的初始化,

attention:子类每一个构造方法第一句都是super();

示例二:


class
Father {
public Father(){
System.out.println("Father的无参构造方法");
}
public Father(String name){
System.out.println("Father的有参构造方法");
}
}
class Son extends Father{
public Son(){
super();
//可注释
System.out.println("Son的无参构造方法");
}
public Son(String name){
super();
//可注释
System.out.println("Son的有参构造方法");
}
}
public class jicheng_biduan {
public static void main(String[] args) {
Son son = new Son();
System.out.println("---------------------");
Son s2=new Son("王祖贤");
}
}

运行结果:

由运行结果可得:
s2并没有执行父类的有参构造,所以我们必须记住:子类中所有构造方法默认都会访问父类中空参数的构造方法。

-------------------------------------------------------------------------------------------

若我们不想给父类无参构造,但还想调用父类中有参构造,怎么办呢?

  这时我们可以super(....);方法调用父类中的有参构造函数,同样的,调用时也会对父类进行初始化。

  也可以使用this();方法。

例如:


class
Father {
//
public Father(){
//
System.out.println("Father的无参构造方法");
//
}
public Father(String name){
System.out.println("Father的有参构造方法");
}
}
class Son extends Father{
public Son(){
super("linqingxia");
System.out.println("Son的无参构造方法");
}
public Son(String name){
super("linqingxia");//this();
也可以用this来调用本类中的无参构造,但用this的前提是子类无参构造中含有super(.....);方法
System.out.println("Son的有参构造方法");
}
}
public class jicheng_biduan {
public static void main(String[] args) {
Son son = new Son();
System.out.println("---------------------");
Son s2=new Son("王祖贤");
}
}

运行结果:

继承中成员方法的关系

   如果父类中的成员方法和子类中方法名字一样,通过子类调用,遵循就近原则。

class
Father {
public void show(){
System.out.println("show Father");
}
}
class Son extends Father{
public void show(){
System.out.println("show Son");
}
}
public class jicheng_biduan {
public static void main(String[] args) {
Son son = new Son();
son.show();
}
}
---------------------------------------------------------------------------------------
class
Father {
public void show(){
System.out.println("show Father");
}
}
class Son extends Father{
//
public void show(){
//
System.out.println("show Son");
//
}
}
public class jicheng_biduan {
public static void main(String[] args) {
Son son = new Son();
son.show();
}
}

运行结果:

----------------------------------

 

最后

以上就是清秀航空为你收集整理的Java中继承与构造方法的关系、成员方法的关系的全部内容,希望文章能够帮你解决Java中继承与构造方法的关系、成员方法的关系所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部