📄 java04_05.htm
字号:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Java程序设计</title>
</head>
<body background="Bg.gif">
<p align="center"><font size="5"><b>§4.5 构造方法的继承</b></font></p>
<p align="left">
子类可以自然继承父类的普通成员变量和方法,也可以继承父类的构造方法,但构造方法的继承必须遵循以下原则:</p>
<ol>
<li>
<p align="left">如果父类存在不含参数的构造方法,子类无需显示地调用就可以自然继承它,而且Java会自动地在子类的构造方法中加是对父类的构造方法的调用。</li>
<li>
<p align="left">如果子类的构造方法的第一条语句是this或super,则Java不再为它加上对父类构造方法的调用。</li>
<li>
<p align="left">对于父类中带参数的构造方法,子类可通过super(参数列表)的形式调用,但它不会被继承。</li>
</ol>
<p align="left">看下面的例子:<br>
class myfather{<br>
myfather(){<br>
System.out.println("这是父类的无参数的构造方法");<br>
}<br>
myfather(int k){<br>
System.out.println("这是父类的带参数的构造方法");<br>
}<br>
}<br>
<br>
class mysun extends myfather{<br>
mysun(){<br>
super(); //这条语句写不写都是一样的<br>
System.out.println("这是子类的构造方法");<br>
}<br>
}<br>
<br>
public class testvar {<br>
public static void main(String argv[])
{<br>
mysun va=new mysun();<br>
va=new mysun(2); //这样写是不行的,因为带参数的构造方法不会继承下来<br>
}<br>
}</p>
<p align="left"> 上面的例子中,mysun可以不写构造函数,同样可以通过编译运行,而且会自动调用父类的无参数的构造方法。如果要调用父类带参数的构造方法,需要写成下面这个样子:</p>
<p align="left">
class mysun extends myfather{<br>
mysun(){<br>
super(3); //这里调用父类的带参数的构造方法<br>
System.out.println("这是子类的构造方法");<br>
}<br>
}<br>
</p>
<p align="left"><a href="index.htm">回目录</a> <a href="java04_04.htm">上一课</a>
<a href="java04_06.htm">下一课</a></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -