如果子类的构造方法中既没有显示调用基类构造方法,而基类中又没有无参数的构造方法,则编译出错。

问题描述

如果子类的构造方法中既没有显示调用基类构造方法,而基类中又没有无参数的构造方法,则编译出错。

class Person {
private String name;
private int age;

public void setName(String name) {
    this.name = name;
}
public void setAge(int age) {
    this.age = age;
}
public String getName(){
    return name;
}
public int getAge(){
    return age;
}

}

class Student extends Person {
private String school;

public String getSchool() {
    return school;
}
public void setSchool(String school) {
    this.school =school;
}

}

public class Test {
public static void main(String args[]){
Student student = new Student();
student.setName("John");
student.setAge(18);
student.setSchool("SCH");
System.out.println(student.getName());
System.out.println(student.getAge());
System.out.println(student.getSchool());
}
}
这段代码有问题吗?
根据”如果子类的构造方法中既没有显示调用基类构造方法,而基类中又没有无参数的构造方法,则编译出错。”这句话,此段代码中,子类Student没有显示调用父类构造方法,而父类Person中又没有无参数的构造方法,编译应该出错啊???

解决方案

Java是这样的,如果你根本没有定义无参数构造函数,那么编译器会产生一个空的构造函数。
换言之:
class A
{
}
等价
class A
{
public A() { } //编译器自动加上
}
但是
class A
{
public A(int i) { }
}
就没有那个默认的构造函数了。

如果你定义了有参数构造函数,那么编译器不会产生无参数构造函数。
如果你的基类没有无参数构造函数,派生类必须显式调用基类的构造函数。

解决方案二:

因为你的派生类没有写构造函数,这种情况是允许的。

解决方案三:

没有写构造函数,不是有个默认的无参构造函数吗?

解决方案四:

你的类中,没有构造函数,java编译器为你自动生成了一个无参数的构造函数。

时间: 2024-11-02 18:22:23

如果子类的构造方法中既没有显示调用基类构造方法,而基类中又没有无参数的构造方法,则编译出错。的相关文章

php中随机广告显示调用代码

 代码如下 复制代码 <?php   #########随机广告显示##########   function myads(){   $dir="ads"; #设置存放记录的目录   //$dir="ads"; #设置存放记录的目录   $ads="$dir/ads.txt"; #设置广告代码文件   $log ="$dir/ads.log"; #设置ip记录文件      $ads_lines=file($ads);

asp.net-VS2010中Default页显示不了母版页的图片

问题描述 VS2010中Default页显示不了母版页的图片 我母版页中的图片设置格式是这样的style="background-image: url('../images/title.png');" 不知道为什么default页就是显示不了母版页的图片出来.....请各位大神帮帮忙吖 解决方案 直接用绝对路径style="background-image: url('/images/title.png');" 去掉../,使用../会依据使用母版的页面来计算图片位

提示框-js中tusi提示显示时间长短控制怎么配置?

问题描述 js中tusi提示显示时间长短控制怎么配置? js中tusi提示框显示时间是多少有办法配置吗?怎么解决! tusi('提示信息!');//这个提示框显示时间怎么控制? setTimeout("window.location.href='{$tourl}'",6000);

在类VC的界面实现中加入目录树

前言 本文是在<轻松类VC界面>的基础上写的,初次写文章,表义不清之处,请谅解!如果书归正传,开始--. 程序运行结果如下图:左边.底下有两个可浮动.可变大小的控制窗口 ,在左边一个Tab页中,可以显示系统目录. 一.实现原理 图中两个窗口的实现类是从CControlBar派生出来的,王骏先生将CSizingControlBar类修改了一下并命名为CCoolBar,我所要做的是应用该类.左边窗口中的目录树,是从类CdirTreeCtrl派生出来的,我们只要引用就可以,详见代码. 二.应用示例

webview-在 android 中如何使用 CSS 调用 apk 字体吗?

问题描述 在 android 中如何使用 CSS 调用 apk 字体吗? 我在webview中设置了字体.因为字体文件太大,当在服务器中放入字体文件时,它会严重影响加载时间. 因此我决定把字体文件打包成apk.但是如何在css中调用呢? 解决方案 打包成apk是啥意思啊,直接放在apk里面了吧 例如assets/fonts/Clockopia.ttf 使用的时候如下方式 Typeface typeFace =Typeface.createFromAsset(getAssets(),"fonts/

java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法

问题描述 java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法 创建子类对象时,Student s = new Student(""school""); 该构造方法中没有显示调用父类的构造方法,但还是编译成功了,该构造方法调用自身的构造函数,此构造函数中有调用父类的构造方法,执行成功的原因是什么 解决方案 不用显示调用,会自动执行父类的构造 解决方案二: 子类的构造方法中,如果没有显示调用父类的构造方法,会默认调用父类无参的构造方法.类似于

位图显示-MFC中OnPaint函数显示BMP图片的问题

问题描述 MFC中OnPaint函数显示BMP图片的问题 为什么我在MFC对话框中,在OnPaint函数中加入以下代码,BMP图像不能显示啊~~· BITMAP bm; CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); CDC memdc; CDC dc; memdc.CreateCompatibleDC(&dc);/ bmp.GetBitmap(&bm); CBitmap *bmpold=memdc.SelectObject(&bmp);/ dc

图片-android 4.0中 WebP不显示问题(不考虑4.0以下系统)

问题描述 android 4.0中 WebP不显示问题(不考虑4.0以下系统) 由于图片太大,我们项目中使用了webp格式的图片,在适配三星s2,4.0系统的时候出现了这种问题,部分webp图片可以显示,一部分webp图片不显示,但是在4.3以上的手机测试时都没有问题,不知道怎么回事,有没有大神帮解答下!谢谢! 解决方案 Android4.0 Toast显示问题Android 4.0 系统语言预设问题android 4.0 显示系统

为什么链表在文件中输出后显示的是乱码?

问题描述 为什么链表在文件中输出后显示的是乱码? int ListInsert( linklist &head) { system("cls"); char ch[2]; linklist *r,*s; FILE *fp; r=head; s=LEN; printf("是否添加学生成绩信息(Y/N):"); scanf("%s",ch); printf("请输入商品的id号:"); scanf("%s&quo