如下,java构造 无参构造的的参数str没有定义,打印不应该是null吗?为啥是有参构造方法的str值。

Java学习笔记七---父类构造方法有无参数对子类的影响
时间: 09:23:32
&&&& 阅读:165
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&子类不继承父类的构造方法,但父类的构造方法对子类构造方法的创建有影响。具体来说就是:
①.当父类没有无参构造方法时,子类也不能有无参构造方法;且必须在子类构造方法中显式以super(参数)的形式调用父类构造方法。否则会出现如下的错误:
Implicit super constructor Person() is undefined for default constructor. Must define an explicit constructor
子类在有参构造方法中显式调用super(参数)后,如果再写一个无参构造方法,则会出现下面的错误:
Implicit super constructor Person() is undefined. Must explicitly invoke another constructor
②.父类有无参构造方法时,子类可以有无参构造方法,也可以有有参构造方法;在有参构造方法中,可以用super显式调用父类构造方法也可以不调用。也就是说,这时候,子类在构造方法的创建上是比较自由的。
下面是简单示例:
有两个类,Person类和Student类,Student类继承自Person类。两个类的构造方法详见代码。
Person类:
public class Person {
public Person() {
public Person(String n, String g) {
this.name =
this.gender =
public Person(String n, int a, String g, String h) {
this.name =
this.age =
this.gender =
this.hobby =
public void setName(String n) {
this.name =
public void setAge(int a) {
this.age =
public void setGender(String g) {
this.gender =
public void setHobby(String h) {
this.hobby =
public String getName() {
return this.
public int getAge() {
return this.
public String getGender() {
return this.
public String getHobby() {
return this.
public void informationPrint() {
System.out.println("My name is " +this.getName());
System.out.println("I am " + this.getAge() +" years old");
if(this.getGender() == "female")
System.out.println("I am a girl");
if(this.getGender() == "male")
System.out.println("I am a boy");
System.out.println("Something is wrong!");
System.out.println("My hobby is " + this.hobby);
Student类:
public class Student extends Person {
String stuN
public Student() {
public Student(String n, String g) {
super(n,g);
public Student(String n, int a, String g, String h) {
super(n,a,g,h);
public Student(String sN, int s) {
this.stuNumber = sN;
this.score =
public Student(String n, String g, String sN, int s) {
super(n,g);
this.stuNumber = sN;
this.score =
public Student(String n, int a, String g, String h, String sN, int s) {
super(n,a,g,h);
this.stuNumber = sN;
this.score =
public void setStuNumber(String num) {
this.stuNumber =
public void setScore(int s) {
this.score =
public String getStuNumber() {
return this.stuN
public int getScore() {
return this.
public void informationPrint() {
super.informationPrint();
System.out.println("My number is " + this.stuNumber);
System.out.println("My score is " + this.score);
public class TestMain {
public static void main(String[] args) {
Person xiaoxiP = new Person("xiaoxiP",29,"female","piano");
Person xiaonanP = new Person("xiaonanP","male");
Student xiaoxiS = new Student("xiaoxiS",28,"female","piano","124",90);
Student xiaonanS = new Student("xiaonanS","male","123",98);
xiaoxiP.informationPrint();
xiaoxiS.informationPrint();
xiaonanP.informationPrint();
xiaonanS.informationPrint();
待学习:访问权限修饰符的问题。标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:http://www.cnblogs.com/chanchan/p/7679716.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!当前位置: →
→ JavaBean中为何要有一个无参的构造方法呢该怎么解决
JavaBean中为何要有一个无参的构造方法呢该怎么解决
& 作者:佚名 & 来源: 互联网 & 热度:
&收藏到→_→:
摘要: JavaBean中为何要有一个无参的构造方法呢?请问一下javaBean中为什么要有一个无参的构造方法呢,因为在用jsp:useBean时 ,会调用...
"JavaBean中为何要有一个无参的构造方法呢该怎么解决"::
javabean中为何要有一个无参的构造方法呢?请问一下javabean中为什么要有一个无参的构造方法呢------解决方案--------------------因为在用jsp:usebean时 ,会调用new bean()一次,bean为你bean类的名字
------解决方案--------------------原则上类可以没有无参数构造器。但是你就不能在许多地方使用这个类啦!比如楼上说的usebean已经许多的ioc的地方。因为他们都需要先调用new beanclass();然后才能被设置属性或者赋值给其他的需要的类。
------解决方案--------------------不光是javabean,所有的类 都需要一个! 原因在于继承 父类和子类 ,可以查看关于继承方面的知识。 搜索此文相关文章:Bean中为何要有一个无参的构造方法呢该怎么解决此文来自: 马开东博客
网址: 站长QQ
上一篇:没有了
JavaBean中为何要有一个无参的构造方法呢该怎么解决_J2EE相关文章
J2EE_总排行榜
J2EE_月排行榜
J2EE_周排行榜
J2EE_日排行榜%=% ?#=# : ^-^
java有参构造方法和无参构造方法
java构造方法:有参构造方法和无参构造方法
一、无参构造方法
如果编写一个javaBean时没有添加无参构造方法,那么编译器会自动添加无参构造方法;
但是如果编写时添加了有参构造方法而未添加无参构造方法,那么编译器只认有参构造方法而不会默认添加无参构造方法!
所以,如果需要使用无参构造方法,一定要在类里面添加
(1)有4个javaBean --------& NoParamInfo.java、 NoParamInfo2.java、 NoParamInfo3.java、 NoParamInfo4.java
public void NoParamInfo{
public void NoParamInfo2{
public NoParamInfo(){} //无参构造方法
public void NoParamInfo3{
//有参构造方法
public NoParamInfo(String name,String address){
this.name=
this.address=
public void NoParamInfo4{
public NoParamInfo(){} //无参构造方法
//有参构造方法
public NoParamInfo(String name,String address){
this.name=
this.address=
public void testNoParamInfo(){
//这样写,编译器不会报错
NoParamInfo
np=new NoParamInfo();
//这样写,编译器也不会报错
NoParamInfo2
np=new NoParamInfo2();
//这样写,编译器会报错,原因是无参构造方法被有参构造方法覆盖,编译器不能提供无参构造方法
NoParamInfo3
np=new NoParamInfo3();
//这样写,编译器不会报错
NoParamInfo4
np=new NoParamInfo4();
//这样写,编译器不会报错
NoParamInfo4
np=new NoParamInfo4(“tina”,'地球村');
二、有参构造方法
顾名思义就是在无参构造方法里面添加了一定的形式参数
构造方法与参数传递
java有参的构造方法和无参的构造方法
java 无参、有参构造方法;静态、非静态代码块执行顺序
定义无参构造和有参构造方法
没有更多推荐了,Java无参构造方法的作用是什么?_百度知道
Java无参构造方法的作用是什么?
定义name 和age,不会自动null和0只有你new Person()得时候JVM装载Person得时候才会为属性name = null, age = 0完成初始化内存分配。通常构造方法里面不建议增加无关的####打印这样,但是你可以写的。假如没有定义构造方法会自动生成一个无参构造,为什么要自动生成无参构造呢?无参的默认不写,但是如果你写了其他的public Person(String name),如果你想直接new Persn(),就必须要写,你可以理解为public Person(String name)‘覆盖‘掉了无参。多样化构造方法可以造成代码适当明了一点点,某种程度上可以让某些程序员风格一致。譬如a构造对象的时候总喜欢Person p = new Person();B喜欢Person p = new Person(&zhang san&);
采纳率:52%
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。401 - 未授权: 由于凭据无效,访问被拒绝。
401 - 未授权: 由于凭据无效,访问被拒绝。
您无权使用所提供的凭据查看此目录或页面。

我要回帖

更多关于 java构造器是什么 的文章

 

随机推荐