class Person{
String name;
private int age;
public Person(String name){
this.name = name;
}
/*public Person(){
System.out.println("Person类的构造方法被调用了....");
}
*/
public void eat(){
System.out.println(name+"在吃饭...");
}
}
class Student extends Person { // Student 就称作为Person类的子类, Person类就称作为Student的父类(超类、基类)
int num; //学号
public Student(){
System.out.println("Student类的构造方法被调用了....");
}
public void study(){
System.out.println(name+"good good study , day day up");
}
}
class Demo2
{
public static void main(String[] args)
{
Student s = new Student();//注意:只要这个对象一创立,马上调用子类和父类的构造函数,默认先调用父类!子类如果没有无参的构造函数,JVM会创建,父类没有就报错
}
}
这个是视频里面的例子,继承类在创建对象的时候,如果没有指定的函数,那么会默认调用父类的无参构造方法,父类如果没有就报错,这个例子我把父类无参构造函数标注了,确实报错!但是我自己练习的时候,随便写的一个小例子,父类毛的函数都没有,创建对象为什么屁事没有呢?根本没报错啊!
class Student{
int id;
String name;
int age ;
}
class WorkStudent extends Student{
int workage;
/*public void study(){
System.out.println(name+"好好敲代码,将来成为高富帅");
}
*/
}
class Demo1
{
public static void main(String[] args)
{ WorkStudent w = new WorkStudent();
}
}
[
6 个解决方案
#1
如果你不写任何构造函数,会自动添加一个默认无参函数
如果你写了任何带参的构造函数,无参的构造函数不会自动添加,需要手动写一个
你自己写的都是系统默认的无参构造函数
如果你写了任何带参的构造函数,无参的构造函数不会自动添加,需要手动写一个
你自己写的都是系统默认的无参构造函数
#2
我实验了一下,子类写个带参的构造函数,没有无参的构造函数,不报错!但是父类如果写了一个带参的构造函数,没有无参的构造函数就马上报错……看来父类必须要有无参的构造函数,或者super指定调用父类的函数,否则就马上报错!
#3
确实是这么个道理,你不指定,就默认调到父类的无参构造上去了
#4
如果你父类没有写构造函数,是存在有一个默认无参构造函数的;但是如果父类写了有参构造函数,那么父类就不存在无参构造函数了。
#5
无参构造函数是隐式的,如果你不创建构造函数,在实例化对象时系统会自动帮你自动创建。如果你自己写了构造函数,就不会自动创建,要自己手写
#6
如果你父类没有写构造函数,是存在有一个默认无参构造函数的;但是如果父类写了有参构造函数,那么父类就不存在无参构造函数了。
说的很对
#1
如果你不写任何构造函数,会自动添加一个默认无参函数
如果你写了任何带参的构造函数,无参的构造函数不会自动添加,需要手动写一个
你自己写的都是系统默认的无参构造函数
如果你写了任何带参的构造函数,无参的构造函数不会自动添加,需要手动写一个
你自己写的都是系统默认的无参构造函数
#2
如果你不写任何构造函数,会自动添加一个默认无参函数
如果你写了任何带参的构造函数,无参的构造函数不会自动添加,需要手动写一个
你自己写的都是系统默认的无参构造函数
我实验了一下,子类写个带参的构造函数,没有无参的构造函数,不报错!但是父类如果写了一个带参的构造函数,没有无参的构造函数就马上报错……看来父类必须要有无参的构造函数,或者super指定调用父类的函数,否则就马上报错!
#3
如果你不写任何构造函数,会自动添加一个默认无参函数
如果你写了任何带参的构造函数,无参的构造函数不会自动添加,需要手动写一个
你自己写的都是系统默认的无参构造函数
我实验了一下,子类写个带参的构造函数,没有无参的构造函数,不报错!但是父类如果写了一个带参的构造函数,没有无参的构造函数就马上报错……看来父类必须要有无参的构造函数,或者super指定调用父类的函数,否则就马上报错!
确实是这么个道理,你不指定,就默认调到父类的无参构造上去了
#4
如果你父类没有写构造函数,是存在有一个默认无参构造函数的;但是如果父类写了有参构造函数,那么父类就不存在无参构造函数了。
#5
无参构造函数是隐式的,如果你不创建构造函数,在实例化对象时系统会自动帮你自动创建。如果你自己写了构造函数,就不会自动创建,要自己手写
#6
如果你父类没有写构造函数,是存在有一个默认无参构造函数的;但是如果父类写了有参构造函数,那么父类就不存在无参构造函数了。
说的很对