java构造函数继承
Ⅰ java继承中构造函数的调用顺序
首先是在main函数里面,jvm发现了程序建立了一个Sanwich的对象,于是jvm便会到Sanwich里面找到构造函数构造一个Sanwich对象。但是jvm发现Sanwich是PortableLunch的子类,所以jvm会要先构造PortableLunch的对象。可是PortableLunch类又是Lunch的子类,所以jvm会要去构造Lunch对象。同理,Lunch又是Meal的子类,因而jvm会要构造Meal的对象。之后jvm会依照Meal、Lunch、PortableLunch、Sanwich的层次结构逐级构造出Sanwich对象,从而打印出Meal()、Lunch()、PortableLunch()、Sanwich()。但是由于Sanwich类中有Bread、Cheese、Letter三个变量,如果你没有他们实例化的话,那么程序就此结束;可是你给这三个变量实例化了,因此Sanwich在调用构造函数Sanwich()之后,回过头来处理这三个实例化了的变量。所以程序又会打印出Bread()、Cheese()、Letter().
Ⅱ java问题:若父类没有构造函数,子类构造函数继承什么
不写构造函数,系统会提供一个默认的构造函数。
你写的情况,A会有一个系统提供的默认构造无参函数
publicA(){}B的构造函数默认首先调用A的这个构造函数(当然因为什么也没执行,运行结果你看不出任何区别)
Ⅲ java继承父类构造函数
父类在子类实例化之前就被实例化了,所以说子类继承过来的属性都是实例化之后的值。这话我说着比较废话,父类不实例化的话压根谈不到调用啊什么的。
但是实例化的时候,类属性只是拥有一个默认的值,比如int型的默认值就是0,所以实际用的时候可能用构造方法或者set方法再设置一遍。
父类以什么身份进入子类。这个问题,父类压根儿不进入子类,子类只是可以调用父类的属性和方法,拥有父类的特性,除此之外没什么关系了。
Ⅳ java子类可以继承父类的构造方法吗
一,java子类不能继承父类的构造方法(可以调用,但不是继承):
1、构造方法的定义是与类的名称相同:如果子类能够继承父类的构造方法,那么在子类的构造方法中就有不同于子类名称的构造法;
2、这与构造方法的定义不符,因此子类是不能继承父类的构造方法的;
3、以上参考资料来源:http://bbs.csdn.net/topics/360118234
二,子类继承父类时,需要注意以下三点:
1、在子类继承父类的时候,子类必须调用父类的构造函数;
2、在父类有默认构造函数,子类实例化时自动调用,在父类没有默认构造函数,即无形参构造函数,子类构造函数必须通过super调用父类的构造函数;
3、在java的继承当中子类是不可以继承父类的构造函数,只能调用父类的构造函数。
Ⅳ 关于JAVA继承的问题:子类无条件地继承父类不含参数的构造函数。这句话对还是错为什么。
不对的,构造函数是不能继承的。子类可以继承父类的所有成员变量和成员方法,但不能继承父类的构造方法。这就意味着,子类不能用“.”来操作父类的构造方法。但实际上,子类的构造方法中一定会调用父类的构造方法,不过这种调用只是为了创建子类对象进行的初始化处理。而不会创建父类对象。可以使用super()调用父类构造方法。
Ⅵ java父类的构造器私有了,怎么继承
一,不能被继承,除非还有其它构造方法:x0dx0a1,设置一个类不能被继承,两种方法:一是final,二就是构造方法私有;x0dx0a2,jave类设计的任何方法只要设置为private之后,就无法继承了,除非改掉构造方法的private的声明,既然声明private就不允许本类之外的任何类使用。x0dx0a二,java中类的定义:x0dx0a1,final类:又称“最终类”,它只能用来创建对象,而不能被继承,与抽象类刚好相反,而且抽象类与最终类不能同时修饰同一个类;x0dx0a2,Private ,编程语句在模块级别中使用,用于声明私有变量及分配存储空间;x0dx0a3,语法Private [WithEvents] varname[([subscripts])] [As [New] type] [,[WithEvents] varname[([subscripts])] [As [New] type]] 。
Ⅶ 关于java中子类继承父类的构造方法
java继承中对构造函数是不继承的,只是调用(隐式或显式)。
举例说明:
public class FatherClass {
public FatherClass() {
System.out.println(100);
}
public FatherClass(int age) {
System.out.println(age);
}
}
public class SonClass extends FatherClass{
public SonClass() {
}
public SonClass(int c) {
System.out.println(1234);
}
public static void main(String[] args) {
SonClass s = new SonClass(66);
}
}
编译后执行结果如下:
分析:SonClass s = new SonClass(66);执行这句时,调用
public SonClass(int c) {
System.out.println(1234);//系统会自动先调用父类的无参构造函数(super())
}
在这个构造函数中,等价于
public SonClass(int c) {
super();//必须是第1行,否则不能编译
System.out.println(1234);
}
所以结果是 100 1234
3.如果子类构造函数是这样写的
public SonClass(int c) {
super(22);//必须是第1行,否则不能编译
//显式调用了super后,系统就不再调用无参的super()了;
System.out.println(1234);
}
执行结果是 22
1234
总结1:构造函数不能继承,只是调用而已。
如果父类没有无参构造函数
创建子类时,不能编译,除非在构造函数代码体中第一行,必须是第一行显式调用父类有参构造函数
如下:
SonClass (){
super(777);//显示调用父类有参构造函数
System.out.println(66);
}
如果不显示调用父类有参构造函数,系统会默认调用父类无参构造函数super();
但是父类中没有无参构造函数,那它不是不能调用了。所以编译就无法通过了。
总结2:创建有参构造函数后,系统就不再有默认无参构造函数。
如果没有任何构造函数,系统会默认有一个无参构造函数。
Ⅷ java 能继承构造器方法吗
首先搞清楚继承和重载两个概念:
Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
继承的对象是类,重载的对象是方法。
所以,java是可以重载构造器方法的。
