JAVA构造函数的继承
1、子类中无参构造函数,可直接继承父类中无参构造函数,前提是所有变量均为public
如下:父类Student中有空构造函数Student(),子类Pupil中有空构造函数Pupil(),后者会继承前者。
注:在本例中,父类中的name、height都是public的,如果是private就无法直接继承。
package javastudy;
public class ConfunDemo5 {
public static void main(String[] args) {
Pupil z=new Pupil();
z.show();
}
}
class Student{ //父类Student
public String name;
public int height;
public Student()
{
this.name="";
this.height=0;
}
}
class Pupil extends Student{ //子类Pupil
private int score;
public Pupil(){ //无参构造函数Pupil()直接继承了父类中的无参构造函数Student()
score=0;
}
public void show(){
System.out.print("姓名:"+name+"\n身高:"+height+"\n分数:"+score);
}
}
输出:
姓名:
身高:0
分数:0
2、子类中无参构造函数继承父类中无参构造函数时,父类参数是private的,无法直接
需要在父类中使用get方法来调用私有变量值。
package javastudy;
public class ConfunDemo5 {
public static void main(String[] args) {
Pupil z=new Pupil();
z.show();
}
}
class Student{ //父类Student
private String name;
private int height;
public Student()
{
this.name="";
this.height=0;
}
public String getName(){
return name;
}
public int getHeight(){
return height;
}
}
class Pupil extends Student{ //子类Pupil
private int score;
public Pupil(){ //无参构造函数Pupil()直接继承了父类中的无参构造函数Student(),但是父类中的name、height是private的
score=0;
}
public void show(){
System.out.print("姓名:"+getName()+"\n身高:"+getHeight()+"\n分数:"+score); //输出时,直接用get方法名。
}
}
3、使用super调用父类的构造函数
super必须写在方法的首行
package javastudy;
public class ConfunDemo5 {
public static void main(String[] args) {
Pupil z=new Pupil("隔壁老王",111,222);
z.show();
Pupil w=new Pupil();
w.show();
}
}
class Student{ //父类Student
public String name;
public int height;
public Student()
{
this.name="";
this.height=0;
}
public Student(String n,int m)
{
name=n;
height=m;
}
}
class Pupil extends Student{ //子类Pupil
private int score;
public Pupil(){
super("孙悟空2",501); //使用super调用父类Student(String n,int m)方法,同时传递实际数值。super必须写在方法的首行。如果这里写super(),则调用的是父类中的Student()方法。
score=0;
}
public Pupil(String x,int y,int z){ //
super(x,y); //使用super调用父类Student(String n,int m)方法,其中super中的参数名称必须与构造函数中的参数名称一致。
score=z;
}
public void show(){
System.out.println("姓名:"+name+"\n身高:"+height+"\n分数:"+score);
}
}
输出:
姓名:隔壁老王
身高:111
分数:222
姓名:孙悟空2
身高:501
分数:0
JAVA构造函数的继承的更多相关文章
- Java构造函数的继承问题
◎构造函数的继承 1.子类只继承父类的默认(缺省)构造函数,即无形参构造函数.如果父类没有默认构造函数,那子类不能从父类继承到任何构造函数. 3.在创建对象时,先调用父类默认构造函数对对象进行初始化, ...
- java中子类继承父类时是否继承构造函数
来源:http://www.cnblogs.com/sunnychuh/archive/2011/09/09/2172131.html --------------------- java继承中对构造 ...
- java中的继承与oc中的继承的区别
为什么要使用继承? 继承的好处: (1)抽取出了重复的代码,使代码更加灵活 (2)建立了类和类之间的联系 继承的缺点: 耦合性太强 OC中的继承 1.OC中不允许子类和父类拥有相同名称的成员变量名:( ...
- java类的继承
继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(重写)的方式,产生一个新的类型.继承是面向对 象的三个基本特征--封装.继承.多态的其中之一,我们在使用java时编写的每一个类都是 ...
- 【JAVA零基础入门系列】Day13 Java类的继承与多态
继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...
- java类的继承的一些细节
类的继承是java面向对象体系的一个重要方面(封装.继承.多态),对于java类的继承,需要注意如下细节. 1.构造函数. 如果一个类没有任何构造函数,系统会默认分配一个无参的构造函数给它,这个构造函 ...
- JAVA面向对象之继承
继承: 子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法 class 子类 extends 父类 { } 继承的特性: 子类拥有父类非private的属性,方法. 子类可以拥有自己 ...
- 第二十八节:Java基础-进阶继承,抽象类,接口
前言 Java基础-进阶继承,抽象类,接口 进阶继承 class Stu { int age = 1; } class Stuo extends Stu { int agee = 2; } class ...
- java基础之继承(一)
虽然说java中的面向对象的概念不多,但是具体的细节还是值得大家学习研究,java中的继承实际上就是子类拥有父类所有的内容(除私有信息外),并对其进行扩展.下面是我的笔记,主要包含以下一些内容点: 构 ...
随机推荐
- (译)Windsor入门教程---第四部分 整合
介绍: 目前为止,已经介绍了应用程序的各个部分.首先是添加了Windsor程序集,然后是添加了控制器工厂,还添加了installer类来注册控制器.虽然但是我们还没用在应用程序中调用他们.在这 ...
- 在阿里云ECS(CentOS6.5)上安装ftp
安装vsftpd 命令: yum install vsftpd –y 结果: 创建ftp存取文件的目录,用户名,密码 命令: useradd -d /home/ftp -g ftp -s /sbin/ ...
- X-008 FriendlyARM tiny4412 uboot移植之copy u-boot到DDR内存
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- Góra urządzenia z dwoma zwiększyć moc może sprawić
Zaprojektowany z rzeczywistym komfortu i łatwości od sportowca w swoim umyśle, kolejna edycja ze wzr ...
- 【转】C++ 11 右值引用的理解
右值引用的目的之一,是为了C++中一个比较影响性能的问题:拷贝临时对象,例如,在 int foo(){ ... } int x; x = foo(); 中,在第三句中,发生了以下的事情: 1.销毁 x ...
- iOS开发中在UIWebView中添加Gif动态图
开发是一件很有趣的事,偶尔在程序中添加一些小东西,会给你的应用增色不少.比如,当你的某些功能暂时还不准备上线时,可以先一个放展示Gif动态图的UIWebView上去,既可以告诉用户APP以后会有的功能 ...
- Android项目文件结构
一.Project项目结构 app/build/ app模块build编译输出的目录 app/build.gradle app模块的gradle编译文件 app/app.iml app模块的配置文件 ...
- zepto callback
// Zepto.js // (c) 2010-2013 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...
- JavaScript易错点转载
前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...
- PHP之Mysql常用SQL语句示例的深入分析
1.插入数据insert into表名(列名1,列名2,列名..) values(值1,值2,值...); insert into product(name, price, pic_path) val ...