1. 在Java中,在某个类中如果不自定义构造器,编译器会自动提供一个无参的构造器
2. 但是一旦用户编写了任意一个构造器无论是有参的还是无参的,系统都不会再提供默认的构造器了。
3. 构造器是不能被继承的。也就是说,当子类继承父类后,必须要重构父类的构造器,否则会编译报错。
类的默认构造函数:
class Animal
{
{
System.out.println("使用默认构造函数");
}
}
public class Sample
{
public static void main(String[] args)
{
new Animal(); //实例化
}
}
此段代码不会报错,说明类在实例化的时候调用了类的默认构造函数。
用户自定义任意构造函数后,编译器不在提供无参的构造函数。
class Animal
{
public Animal(String name){
System.out.println("自定义Animal类的构造函数");
}
}
public class Sample
{
public static void main(String[] args)
{
new Animal(); //实例化
}
}
此段代码则会编译出现如下错误
你想要执行无参的构造函数,可是编译器隐藏了该构造函数,所以会出错。
构造器是不能被继承的,因为其采用的是级联调用机制,什么是级联调用机制
级联调用:
**
百度的搜索引擎垃圾啊,搜索了半天都找不到合适的。 自己做一张吧。
**
说明:Bird类继承Animal类,Main是主方法。Object是所有类的父类。从下向上调用,自上向下执行。
下面这段代码就解释了构造器不能继承
class Fruit
{
//定义一个name参数的构造器
public Fruit(String name)
{
System.out.println("自定义水果构造函数");
}
}
class Apple extends Fruit
//没有语句的Apple类
{
}
public class Sample
{
public static void main(String[] args)
{
//创建对象
new Apple("红富士");
}
}
错误提示:找不到符号
有的提示:没有参数
如何改正:
请一口气读完下面这段话