Java继承关系构造函数的调用
2015-04-16 23:25
169 查看
Java中的对象封装是面向对象编程思想的完美体现,但在Java的类继承关系中,各父类和子类之间的关系到底是怎样的呢?
本文就Java基础中父类及子类的构造方法参数传递讨论其关系。 若有这样的关系:爷爷、父亲及儿子,父亲继承自爷爷,儿子继承自父亲,代码如下:
创建爷爷类:
public class Grandpa {
private String name;
public Grandpa(String name){
this.name=name;
System.out.println("my name is "+name);
}
public void mySelf(){
System.out.println(name);
}
}
创建继承自爷爷类的父亲类:
public class Father extends Grandpa {
public Father(String name){
super(name);
}
}
创建继承自父亲的儿子类:
public class Son extends Father{
public Son(String name){
super(name);
}
}
在执行类的主函数中实例化这三个类,并调用爷爷类中的mySelf()方法
public class Test {
public static void main(String[] args) {
Son son=new Son("abc");
Father father=new Father("def");
Grandpa grandpa=new Grandpa("123");
son.mySelf();
father.mySelf();
grandPa.mySelf();
}
}
执行结果为:
abc
def
123
在实例化Son类是其构造函数传入的参数name在实例化的过程中实质上所传递的路线为下图所示:
super是对父类进行调用,在son的构造函数中使用super()实际上是直接调用了父类的构造函数(即Father类),同样Father类的构造函数使用super()调用了它的父类GrandPa类的构造函数,所以在Son(String name)这个构造函数中所传入的参数传入到函数中的super(name)中,从而传入到父类Father的构造函数中,在传入到GrandPa中,最终使用了Son(String name)这个构造函数中的参数完成了对最终父类构造函数的调用,同样Father类也是如此。
本文就Java基础中父类及子类的构造方法参数传递讨论其关系。 若有这样的关系:爷爷、父亲及儿子,父亲继承自爷爷,儿子继承自父亲,代码如下:
创建爷爷类:
public class Grandpa {
private String name;
public Grandpa(String name){
this.name=name;
System.out.println("my name is "+name);
}
public void mySelf(){
System.out.println(name);
}
}
创建继承自爷爷类的父亲类:
public class Father extends Grandpa {
public Father(String name){
super(name);
}
}
创建继承自父亲的儿子类:
public class Son extends Father{
public Son(String name){
super(name);
}
}
在执行类的主函数中实例化这三个类,并调用爷爷类中的mySelf()方法
public class Test {
public static void main(String[] args) {
Son son=new Son("abc");
Father father=new Father("def");
Grandpa grandpa=new Grandpa("123");
son.mySelf();
father.mySelf();
grandPa.mySelf();
}
}
执行结果为:
abc
def
123
在实例化Son类是其构造函数传入的参数name在实例化的过程中实质上所传递的路线为下图所示:
super是对父类进行调用,在son的构造函数中使用super()实际上是直接调用了父类的构造函数(即Father类),同样Father类的构造函数使用super()调用了它的父类GrandPa类的构造函数,所以在Son(String name)这个构造函数中所传入的参数传入到函数中的super(name)中,从而传入到父类Father的构造函数中,在传入到GrandPa中,最终使用了Son(String name)这个构造函数中的参数完成了对最终父类构造函数的调用,同样Father类也是如此。
相关文章推荐
- 1,常见的调用约定
- 在C#里面调用带有回调函数和自定义结构体的DLL的例程
- VC 纯资源DLL制作及调用
- 一个简单的perl函数调用的例子
- C#多项目间的窗体调用和传值
- smarty循环调用问题
- 应用开发中常用的一些手机设置的检测和调用
- magento 静态块 static block 调用
- iPhone开发笔记(19)实现类似网易新闻当应用状态变为active时手动调用下拉刷新的功能
- 如何在多线程中调用winform窗体控件(续)
- 动画:matrix 函数的调用顺序
- lua 进阶3--lua文件中调用C++函数
- 函数GetFullPathName的调用细节
- java 中调用 Matlab 的函数
- Winform项目调用asp.net数据接口
- html模板,根据链接调用页面展示
- java调用c dll,指针参数和结构体参数搞定(转)
- 关于AJAX跨域调用web api问题汇总(二)
- Mac下Python调用C动态库
- Lua 脚本语言 与 C的互相调用