黑马程序员技术交流社区

标题: 通过set和getf方法访问成员变量 我这么做对吗 请高手指点 [打印本页]

作者: Allencheng    时间: 2014-9-12 16:42
标题: 通过set和getf方法访问成员变量 我这么做对吗 请高手指点
/*
* 声明类Student,包含3个成员变量:name、age、score,要求可以通过 new Student("张三", 22, 95) 的方式创建对象,
* 并可以通过set和get方法访问成员变量
*/
class StudentTest
{
        public static void main(String[] args)
        {
                Student stu = new Student();
                stu.getStudent("张三", 22, 95);
        }
}
        class Student {
                private String name;
                private int age;
                private int score;
                // 定义带参数的构造函数
                public void setStudent(String name, int age, int score)
                {        
                        this.name = name;
                    this.age = age;
                    this.score = score;
                }
                       
                       
                        // 定义方法
                public void getStudent(String name, int age, int score)
                {
                    return;
                }
               
                }



作者: 残羹夜宴丶    时间: 2014-9-12 17:20
首先你私有化属性了,私有化属性之后调用set get方法的目的是为了能访问到你的属性。而set get方法个人建议需要分开写。
而楼主写的两个方法只是普通的方法,而并非真正意义上的set  get方法,楼主方向错了。

应该写setName( 所有的都是这样   手机码字,代码就不给你列出来了。) 而不是写set+类名。  

祝楼主好运。 基础视频来回看个三遍直接发现什么都简单的多。
作者: Allencheng    时间: 2014-9-12 17:29
残羹夜宴丶 发表于 2014-9-12 17:20
首先你私有化属性了,私有化属性之后调用set get方法的目的是为了能访问到你的属性。而set get方法个人建议 ...

谢谢!你说的get和set分开写我也试过 但我觉得好像代码重复的很多,就按自己理解的试着写了一下。自己也觉得好像哪里不对,但是又不知道具体该怎样写。
还在努力看视频中啊!

作者: 李春丽    时间: 2014-9-12 18:18
来瞧瞧我写的,够细的吧!

  1. public class Test8
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //通过 new Student("张三", 22, 95) 的方式创建对象。
  6.                 Student s = new Student("张三",22,95);
  7.                
  8.                 //set 设置各个属性信息。
  9.                 s.setName("name张三");
  10.                 s.setAge(2);
  11.                 s.setScore(9);
  12.                 //使用 get 获取属性信息。
  13.                 System.out.println(s.getName());
  14.                 System.out.println(s.getAge());
  15.                 //设置并获取全部的学生信息。
  16.                 s.setStudent("张三1", 21, 91);
  17.                 System.out.println(s.getStudent());
  18.         }
  19. }
  20. //建立学生类
  21. class Student
  22. {
  23.         private String name;
  24.         private int age;
  25.         private int score;
  26.         //构造方法
  27.         public Student(String name,int age,int score)
  28.         {
  29.                 this.name = name;
  30.                 this.age = age;
  31.                 this.score = score;
  32.         }
  33.         //set 各个成员变量。
  34.         public void setName(String name)
  35.         {
  36.                 this.name = name;
  37.         }
  38.         public void setAge(int age)
  39.         {
  40.                 this.age = age;
  41.         }
  42.         public void setScore(int score)
  43.         {
  44.                 this.score = score;
  45.         }
  46.         public void setStudent(String name,int age,int score)
  47.         {
  48.                 this.name = name;
  49.                 this.age = age;
  50.                 this.score = score;
  51.         }
  52.        
  53.         //get 各个成员变量。
  54.         public String getName()
  55.         {
  56.                 return name;
  57.         }
  58.         public int getAge()
  59.         {
  60.                 return age;
  61.         }
  62.         public int getScore()
  63.         {
  64.                 return score;
  65.         }
  66.         public String getStudent()
  67.         {
  68.                 return name+","+age+","+score;
  69.         }
  70. }
复制代码

作者: yuli2039    时间: 2014-9-12 18:28
本帖最后由 yuli2039 于 2014-9-12 18:29 编辑

首先,你构造方法都写错了,你这只是一个成员方法而已!
其次,是要通过get和set方法访问成员变量,你这方法是访问的成员变量么?
(楼主先理解一下构造方法和成员方法,以及成员变量吧!)
代码:
  1. class Student {
  2.         private String name;
  3.         private int age,score;
  4.         Student(String name,int age,int score){
  5.                 this.name=name;
  6.                 this.age=age;
  7.                 this.score=score;
  8.         }
  9.         public void setName(String name){
  10.                 this.name=name;
  11.         }
  12.         public String getName(){
  13.                 return this.name;
  14.         }
  15.         //age和score自己写
  16. }
复制代码

作者: yuli2039    时间: 2014-9-12 18:44
李春丽 发表于 2014-9-12 18:18
来瞧瞧我写的,够细的吧!

写的没错,不过说说我的理解:
通常情况下,比如有一个Student类,我们定义的getStudent方法通常是返回一个student实例对象,而不是返回该对象的所有属性!
另外:我们定义一个类都会复写toString方法,返回它的字符串表现形式,你这里定义的getStudent方法和toString方法完全重复了,个人觉得定义在这里虽然没错,但是很不合适。
作者: daoqin    时间: 2014-9-12 19:18
set可以有多个参数,get写的不对!
作者: Fightin黑马    时间: 2014-9-12 22:11
和标准的javaBean有很大差距的
作者: 李春丽    时间: 2014-9-13 10:39
yuli2039 发表于 2014-9-12 18:44
写的没错,不过说说我的理解:
通常情况下,比如有一个Student类,我们定义的getStudent方法通常是返回一 ...

受教了,谢谢!
返回Student类型的实例对象,我想到了,但是复写toString方法。倒是没考虑。谢谢~\(≧▽≦)/~啦啦啦!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2