Java中自动生成构造方法详解
Java中自动生成构造方法详解
每个类在没有声明构造方法的前提下,会自动生成一个不带参数的构造方法,如果类一但声明有构造方法,就不会产生了.证明如下:
例1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class person { person(){System.out.println( "父类-person" );} person( int z){} } class student extends person { // student(int x ,int y){super(8);} } class Rt { public static void main(String[]args) { student student_dx= new student(); //创建student类的对象 } } //输出结果:父类-person |
例2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class person { person(){System.out.println( "父类-person" );} person( int z){} } class student extends person { student( int x , int y){ super ( 8 );} } class Rt { public static void main(String[]args) { student student_dx= new student( 3 , 4 ); //创建student类的对象 } } //没有输出结果 |
例1说明:student类自动生成student() {super();}(前提是:student类没有声明构造方法的前提下) 'super()'是用来调用父类的构造方法.
例2中的person()方法没有被调用,说明student类没有产生student(){super();}方法.这是因为student类已经声明构造方法,默认的那个不带参数的构造方法就不产生了.
再举例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class person { person( int z){} } class student extends person { } class Rt { public static void main(String[]args) { student student_dx= new student(); //创建student类的对象 } } /*报错: exercise14.java:8: 找不到符号 符号: 构造函数 person() 位置: 类 person class student extends person ^ 1 错误 */ |
说明:student类自动产生了一个student(){super();},但是由于person类已经声明了构造方法,默认的那个带参数的构造方法没有产生.,所以报错中提到找不到构造函数person()
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
相关文章
Spring中的ImportBeanDefinitionRegistrar接口详解
这篇文章主要介绍了Spring中的ImportBeanDefinitionRegistrar接口详解,ImportBeanDefinitionRegistrar接口是也是spring的扩展点之一,它可以支持我们自己写的代码封装成BeanDefinition对象,注册到Spring容器中,功能类似于注解@Service @Component,需要的朋友可以参考下2023-09-09SpringBoot与Spring中数据缓存Cache超详细讲解
我们知道内存读取速度远大于硬盘读取速度,当需要重复获取相同数据时,一次一次的请求数据库或者远程服务,导致在数据库查询或者远程方法调用上小号大量的时间,最终导致程序性能降低,这就是数据缓存要解决的问题,学过计算机组成原理或者操作系统的同学们应该比较熟悉2022-10-10Spring boot事务无效报错:Transaction not enabled问题排查解决
在业务代码中经常需要保证事务的原子性,但是有的时候确实是出现事务没有生效,这篇文章主要给大家介绍了关于Spring boot事务无效报错:Transaction not enabled问题排查的相关资料,需要的朋友可以参考下2023-11-11
最新评论