已有258人关注
请教
发表在Java答疑区 2017-04-14
是否精华
版块置顶:

例子:

blob.png

blob.png

同样是输出信息,这几个的差异在哪?通过属性赋值和通过全局变量赋值的作用上的区别我能理解,但是通过属性赋值与通过构造函数作用上的区别我不是很明白,所以请老师给我解答一下

分享到:
精彩评论 6
David
学分:914 LV7
TA的每日心情
最后的冲刺
2017-07-15 10:46:08
2017-04-15
沙发

public Book(String name, double price) {

    this.name = name;

    this.price = price;

}

有参构造方法的作用是把参数name和price的值赋给Book类中的属性name和price。

主方法中通过“Book book = new Book("西游记", 38.0);”为有参构造方法中的参数name和price赋值,然后再把参数name和price的值赋给Book类中的属性name和price,这样调用print()方法就能打印出Book类中属性name和price的值。

静守时光以待流年
学分:221 LV4
2017-04-15
板凳

David 发表于2017-04-15 15:51

public Book(String name, double price) {

    this.name = name;

    this.price = price;

}

有参构造方法的作用是把参数name和price的值赋给Book类中的属性name和price。

主方法中通过“Book book = new Book("西游记", 38.0);”为有参构造方法中的参数name和price赋值,然后再把参数name和price的值赋给Book类中的属性name和price,这样调用print()方法就能打印出Book类中属性name和price的值。

这个我知道,我是想问,他们在用法上的区别,或者说,什么时候用属性,什么时候用构造函数,在这个例子里,两者都直接可以赋值并输出,如果仅仅是作用于相同的用途,那就没必要有两种方式啊。blob.png

David
学分:914 LV7
TA的每日心情
最后的冲刺
2017-07-15 10:46:08
2017-04-15
地板

这里的目的是介绍为属性赋值的3种方式:

(1)通过有参构造方法为属性赋值;

(2)通过“对象.属性”为属性赋值;

(3)通过“对象.set方法”为属性赋值。

静守时光以待流年
学分:221 LV4
2017-04-15
4L

我知道是赋值。。。

那么老师我还问下,子类调用在创建构造函数时怎么即可以保留父类的参数,又增加一个自己私有的参数。

class Student:Person{

     public string school; 

    public student (string name ,int age ,string school ):base(name,age){

       school=school     }

那么 java呢?

David
学分:914 LV7
TA的每日心情
最后的冲刺
2017-07-15 10:46:08
2017-04-17
5L

通过继承就能实现,例如

class Book {

    String name;

    String author;

    public void show() {

        System.out.println("书名:" + name);

        System.out.println("作者:" + author);

    }

}

class SoldBook extends Book {

    double price;

    public void show() {

        System.out.println("书名:" + name);

        System.out.println("作者:" + author);

        System.out.println("定价:" + price);

    }

}

public class Test {

    public static void main(String[] args) {

        SoldBook soldBook = new SoldBook();

        soldBook.name = "《Java从入门到精通》";

        soldBook.author = "明日科技";

        soldBook.price = 59.8;

        soldBook.show();

    }

}

静守时光以待流年
学分:221 LV4
2017-04-18
6L

David 发表于2017-04-17 13:44

通过继承就能实现,例如

class Book {

    String name;

    String author;

    public void show() {

        System.out.println("书名:" + name);

        System.out.println("作者:" + author);

    }

}

class SoldBook extends Book {

    double price;

    public void show() {

        System.out.println("书名:" + name);

        System.out.println("作者:" + author);

        System.out.println("定价:" + price);

    }

}

public class Test {

    public static void main(String[] args) {

        SoldBook soldBook = new SoldBook();

        soldBook.name = "《Java从入门到精通》";

        soldBook.author = "明日科技";

        soldBook.price = 59.8;

        soldBook.show();

    }

}

谢谢老师 ,我前面就是这样,但估计漏了什么才错了。。。所以以为不可以这样写才来提问的。。。。。

首页上一页 1 下一页尾页 6 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照