黑马程序员技术交流社区
标题:
面向对象基础问题
[打印本页]
作者:
彭颖
时间:
2013-3-24 21:28
标题:
面向对象基础问题
本帖最后由 彭颖 于 2013-3-24 22:16 编辑
毕姥爷基础中说对象是用于封装数据的。当建立工具类后,新建工具类对象只调用公共方法,却没有用对象去封装特有数据。
提问:1、封装数据的不是方法么?为什么说是对象
2、如何举例说明怎样才算是封装特有数据
工具类:
class ArrayTool{
puiblic int getMax(int[] arr){
for(int x=1;x<arr.length;x++){
if(arr[x]>arr[max])
max=x;
}
return arr[max];
}
}
复制代码
--------------------------------------------------------
初始操作:
ArrayTool tool = new ArrayTool();
int max = tool.getMax(arr);
System.out.println("max="+max);
复制代码
作者:
michaelchen
时间:
2013-3-24 22:05
class StudentDemo
{public static void main(String[] args)
{ Student s=new Student("1","zhangsan");//只有对象才可能调用它的方法,只能用对象封装
String name=s.getName();
String id=s.getId();
System.out.println("id:"+id+"--name:"+name);
}
}
class Student
{ private String id;//定义为私有型,即特有型数据,外面的类无法直接获得它的值
private String name;//定义为私有型,即特有型数据,外面的类无法直接获得它的值
Student(String id,String name)
{this.id=id;
this.name=name;
}
public String getId()//通过这个接口来获取ID
{return id;}
public String getName()//通过这个接口来获取name
{return name;}
}
希望对楼主有所帮助
复制代码
作者:
壁虎
时间:
2013-3-24 22:09
本帖最后由 tuo1254 于 2013-3-24 22:18 编辑
首先楼主得知道什么叫做对象特有数据。
对象特有数据,就是非静态的成员变量中存储的数据。
如:
class Student{
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void SetAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
}
复制代码
public class Test{
public static void main(String[] args){
Student stu=new Student();
stu.setName("小李");
stu.setAge(18);
Student stu1=new Student();
stu1.setName("张三");
stu1.setAge(34);
}
}
复制代码
stu学生对象的 姓名:小李 年龄:18
stu1学生对象的 姓名:张三 年龄:34
stu和stu1对象都有一份name和age字段,里面所存储的数据可以一样,也可以不一样。双方互不干扰,这就是某个对象所特有的数据
而这些小李,张三,18,34都是被对象所封装起来的。
作者:
黄诗宾
时间:
2013-3-24 23:51
可以仔细看看我这段代码的注释
/* 封装,类中的成员变量进行了隐藏,外界不能直接访问
间接访问是可以,提供了公共的函数,对成员变量进行间接访问
公共函数,有标准的写法
成员变量:2种,赋值,取值 */
class Person
{
private String name; //定义成员变量name
private int age; //定义成员变量age
//赋值函数,标准写法(未完美)
public void setName(String n){ //获取name值,为string类型
name = n;
}
//取值函数,标准写法(未完美)
public String getName(){//取出name值,直接写空括号,返回函数
return name;
}
public void setAge(int a){ //获取age值,为int类型
age = a;
}
public int getAge(){ //取出age值
return age;
}
void speak()//输出函数
{
System.out.println(name+".."+age+"...");
}
}
class PersonDemo1 {
public static void main(String[] args) {
Person p1 = new Person(); //定义一个对象名为p1
p1.setAge(22); //用p1给函数传值22
//int n =p1.getAge();
System.out.println(p1.getAge()); //获取值
p1.speak();//打印
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2