黑马程序员技术交流社区

标题: 面向对象基础问题 [打印本页]

作者: 彭颖    时间: 2013-3-24 21:28
标题: 面向对象基础问题
本帖最后由 彭颖 于 2013-3-24 22:16 编辑

毕姥爷基础中说对象是用于封装数据的。当建立工具类后,新建工具类对象只调用公共方法,却没有用对象去封装特有数据。

提问:1、封装数据的不是方法么?为什么说是对象
         2、如何举例说明怎样才算是封装特有数据

工具类:
  1. class ArrayTool{
  2.     puiblic int getMax(int[] arr){
  3.       for(int x=1;x<arr.length;x++){
  4.          if(arr[x]>arr[max])
  5.             max=x;
  6. }
  7. return arr[max];
  8. }
  9. }
复制代码
--------------------------------------------------------
初始操作:
  1. ArrayTool tool = new ArrayTool();
  2. int max = tool.getMax(arr);
  3. System.out.println("max="+max);
复制代码

作者: michaelchen    时间: 2013-3-24 22:05
  1. class StudentDemo
  2. {public static void main(String[] args)
  3.         { Student s=new Student("1","zhangsan");//只有对象才可能调用它的方法,只能用对象封装
  4.                 String name=s.getName();
  5.                 String id=s.getId();
  6.                 System.out.println("id:"+id+"--name:"+name);
  7.         }
  8. }
  9. class Student
  10. { private String id;//定义为私有型,即特有型数据,外面的类无法直接获得它的值
  11.         private String name;//定义为私有型,即特有型数据,外面的类无法直接获得它的值
  12.         Student(String id,String name)
  13.         {this.id=id;
  14.          this.name=name;
  15.         }
  16.         public String getId()//通过这个接口来获取ID
  17.         {return id;}
  18.         public String getName()//通过这个接口来获取name
  19.         {return name;}
  20. }


  21. 希望对楼主有所帮助
复制代码

作者: 壁虎    时间: 2013-3-24 22:09
本帖最后由 tuo1254 于 2013-3-24 22:18 编辑

首先楼主得知道什么叫做对象特有数据。
对象特有数据,就是非静态的成员变量中存储的数据。
如:
  1. class Student{
  2.        private String name;
  3.        private int age;
  4.        public void setName(String name){
  5.                 this.name=name;
  6.        }
  7.        public String getName(){
  8.                  return name;
  9.        }
  10.       public void SetAge(int age){
  11.                this.age=age;
  12.       }
  13.       public int getAge(){
  14.             return age;
  15.       }
  16. }
复制代码
  1. public class Test{
  2.          public static  void main(String[] args){
  3.               Student stu=new Student();
  4.               stu.setName("小李");
  5.               stu.setAge(18);
  6.               Student stu1=new Student();
  7.               stu1.setName("张三");
  8.               stu1.setAge(34);
  9.          }
  10. }
复制代码
stu学生对象的 姓名:小李  年龄:18
stu1学生对象的 姓名:张三 年龄:34
stu和stu1对象都有一份name和age字段,里面所存储的数据可以一样,也可以不一样。双方互不干扰,这就是某个对象所特有的数据
而这些小李,张三,18,34都是被对象所封装起来的。























作者: 黄诗宾    时间: 2013-3-24 23:51
可以仔细看看我这段代码的注释
  1. /*  封装,类中的成员变量进行了隐藏,外界不能直接访问
  2.     间接访问是可以,提供了公共的函数,对成员变量进行间接访问
  3.     公共函数,有标准的写法
  4.     成员变量:2种,赋值,取值 */  
  5. class Person  
  6. {  
  7.     private String name;  //定义成员变量name  
  8.     private int age; //定义成员变量age  
  9.     //赋值函数,标准写法(未完美)  
  10.     public void setName(String n){ //获取name值,为string类型  
  11.         name = n;  
  12.     }  
  13.     //取值函数,标准写法(未完美)  
  14.     public String getName(){//取出name值,直接写空括号,返回函数  
  15.         return name;  
  16.     }  
  17.   
  18.     public void setAge(int a){ //获取age值,为int类型  
  19.       age = a;  
  20.     }  
  21.     public int getAge(){ //取出age值  
  22.       return age;  
  23.     }  
  24.      void speak()//输出函数  
  25.     {  
  26.       System.out.println(name+".."+age+"...");  
  27.     }  
  28. }  
  29. class PersonDemo1 {  
  30.     public static void main(String[] args) {  
  31.         Person p1 = new Person(); //定义一个对象名为p1  
  32.         p1.setAge(22); //用p1给函数传值22  
  33.         //int n =p1.getAge();  
  34.         System.out.println(p1.getAge()); //获取值  
  35.         p1.speak();//打印  
  36.     }  
  37. }  
复制代码





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