java中有关get方法的使用(具体程序分析)

问题描述

java中有关get方法的使用(具体程序分析)

最近在学习java,用的徐彩霞的java基础教程。
有个例子不太明白。
/* /注释部分的get部分有和没有结果一样,想知道为什么要用get?
又必须要用的情况吗?
刚学,懂得比较少,谢谢了~
class Person
{
private String name;
private int age;
private void talk()
{
System.out.print("I'm "+name+" and " + age+" years old");
}
public void say()
{
talk();
}
public void setName(String str)
{
name=str;
}
public void setAge(int a)
{
if(a>0)
age=a;
}
/*public String getName()
{
return name;
}
public int getAge()
{
return age;
}
/
}
public class TestPersonDemo5 {

public static void main(String[] args)
{
    // TODO Auto-generated method stub
  Person p=new Person();
  p.setName("John");
  p.setAge(30);
  p.say();
}

}

解决方案

set和get字面理解是设置和取得,在Java中也基本就是这种意思,你可以在一个类中进行设置变量值,然后又设置get方法可以让该变量值在别处让其它的类去得到。也就是get就是给别处一个得到的方法,所以你说的删除一些不影响因为这里不是别处。如果是其它的类去取得该值没有get方法就不行了,我的理解希望帮到你。

解决方案二:

面向对象编程告诉我们在一个类中,通过set方法设置属性的值,通过get方法获取属性的值,而不要将属性直接暴露。你可以在get方法中进行各种处理,然后得到结果。

解决方案三:

这个例子只是展示java中一个类的基本函数成员,虽然在这个例子的运行中get函数没有用,但是它代表了一种获取与封装类成员的基本方法。作为一种隐蔽函数成员与处理方式的接口,set与get系列函数是类的基本成员函数。

解决方案四:

这涉及到面向对象中的封装,很多情况下一个对象的属性我们只能获取不能修改,我们只能把这个属性设置为private或者protected,但是这样的话外部连获取该属性也获取不到了。所以我们只能手动添加一个public 的get方法,利用方法来返回private属性的值。这样可以保护属性不能被外部修改。

解决方案五:

这个涉及到对象的封装,如果成员变量用private修饰 ,那么属性只能由本类进行访问,其它类是无法访问到的。如果使用默认的,或者 public可能把成员变量暴露给用户,这样不利于应用程序的安全性。那么,这时候 ,如果我们要得到内存当中成员变量的值 ,只能公开一个public的方法,因是get方法,来取得变量的值 ,保证应用程序可以正常运行。

解决方案六:

这个涉及到对象的封装,如果成员变量用private修饰 ,那么属性只能由本类进行访问,其它类是无法访问到的。如果使用默认的,或者 public可能把成员变量暴露给用户,这样不利于应用程序的安全性。那么,这时候 ,如果我们要得到内存当中成员变量的值 ,只能公开一个public的方法,因是get方法,来取得变量的值 ,保证应用程序可以正常运行。

解决方案七:

这个问题问的很好;对于java这类oop的语言,为了封装内部状态;尽量把成员对象设成private。这样外面的程序就不能直接访问这些成员变量了。但是有的时候,外面的对象要set或者get内部变量的值,所以就产生了accessor(get方法)和modifier(set方法)。在这个例子里。貌似accessor方法没有必要,但是生成person对象的目的是为了将来能访问它,如果缺少accessor方法,将来如何访问这些成员变量呢。
再加一句,对于这个例子,设计是有问题的,首先对人的设计,普通只设计生日(生日不变的),这样生日就是final类型了。至于姓名。取决于你的姓名是否改变。理论上来说即使姓名会改变,我们最好把姓名设计成final的。这样就不需要setName和setAge方法了。而是在构造函数里面设置姓名和生日。这里追加这么一句的原因是变量的常量化很重要,尤其对多线程编程环境。

解决方案八:

java面向对象,有一种叫做“私有(privat)成员变量”的结构,可以有效防止外部类的非法或非故意的调用,比如,
public class 人{
public int 年龄;
}

public class 死神{
Vector<生物> set = new Vector<生物>();
public void 杀了活的太长的生物(){
.........
}
}

大致是这个意思。。。。。

时间: 2024-09-11 18:21:56

java中有关get方法的使用(具体程序分析)的相关文章

java中关于dismiss方法的使用

问题描述 java中关于dismiss方法的使用 myDialog.dismiss( )比如这条语句中是关闭一个对话框的意思吗dismiss还有哪些方面的应用 解决方案 看下这个函数的源码上面的注释信息,jdk源码上的英文注释就是很好的参考文档的. 解决方案二: 这和java语言没有关系,这只是dialog对象定义的方法罢了.你也可以写一个类,定义一个叫dismiss的方法. 在英文字面看来,dismiss就是消失的意思. 解决方案三: java中waitnotifynotifyAll的使用方法

java中this作为方法名的时候的问题,不知道我把它看成方法名正步正确

问题描述 java中this作为方法名的时候的问题,不知道我把它看成方法名正步正确 如下代码所示, public MyView(Context context) { this(context null); } //this在这里是方法吗,this是一个方法名吗? 解决方案 this用来调用你这个类中定义的一个构造方法 解决方案二: this不是方法名,而是Java中对当前对象的引用.例如当前对象的引用用this,父类对象的引用用super 解决方案三: 一个类中定义两个构造函数,在一个构造函数中

java中不能修饰方法不能修饰变量不能修饰类的关键词分别是什么

问题描述 java中不能修饰方法不能修饰变量不能修饰类的关键词分别是什么 java中不能修饰方法不能修饰变量不能修饰类的关键词分别是什么 实现现多个接口的类是不是必须重写其所有方法, 解决方案 首先,第一个问题,了解哪些关键词能修饰方法.变量.类比较容易些. 修饰方法的关键字:public/private/protected/default ,static, 修饰变量了:final ,static:修饰类的:public/private/protected/default,static 其次,实

如何理解java中 对象.this方法 还有 类.this.方法的 意义

问题描述 如何理解java中 对象.this方法 还有 类.this.方法的 意义 如何理解java中 对象.this方法 还有 类.this.方法的 意义 有没有这两种语法规则呢 解决方案 this.方法是在某个对象的实例方法内,this代表当前实例.一般情况下不用写,除非它和参数重名才需要: class A { int a; int b; public void seta(int a) { this.a = a; //因为参数a和成员变量a都叫a,所以需要区分. b = a; //相当于th

java中对象调用方法返回一个对象的问题

问题描述 java中对象调用方法返回一个对象的问题 例如session.createQuery(hql); 那么这条语句返回的对象属于哪个类呢,如何判断呢? 解决方案 ctrl加鼠标点击createQuery,会有返回方法,或者你在通过session点的时候也可以看到返回方法. 解决方案二: 按住ctrl点击方法,自己去看方法的返回值. 解决方案三: 在java中将一个对象的所有方法打印出来java中远程对象方法调用中的安全策略问题java中返回局部对象问题 解决方案四: 事实上他返回的还是qu

如何理解java中的某些方法不是线程安全的(不能同步访问)。

问题描述 如何理解java中的某些方法不是线程安全的(不能同步访问). 如何理解java中的某些方法不是线程安全的(不能同步访问). 能同步访问的方法有哪些,如何判断一个方法能不能同步访问 解决方案 不是线程安全的(不能同步访问) 你说反了.不是线程安全的才需要同步访问.同步访问的意思就是串行执行,等前面执行完了,再执行后面的. 线程不安全的场合很多,比如像操作系统中的用户界面.打印机等外设.控制台输出,都不允许并发(设想两个程序同时要输出文字到同一个屏幕,那还不乱套了) 在代码中,每个线程有自

java中关于add方法的使用

问题描述 java中关于add方法的使用 add方法单独使用吗 一定要有对象吗,对象.add( ) add方法前面的对象的选取范围是什么,哪些类的对象才可以使用add方法 解决方案 可能你有点钻牛角尖了. add()方法跟其它方法在本质上并没有太大的区别,每个方法实现什么样的功能,也都是我们或者定义这个方法的人赋予的. 所有方法最终必须是基于类的,所以我们在调用方法的时候,才会有对象.add(),或者对象.remove()等 可能有的时候,你见到了一个方法使用的时候前边并没有对象或者类来调用,这

对象-java中重写equals方法为什么不直接在里面比较hashcode()?

问题描述 java中重写equals方法为什么不直接在里面比较hashcode()? 看书上说只要重写在一个类中重写equals方法,那就一定要重写hashcode方法,因为两个对象只要equals返回值为true,那么他俩的hashcode就一定相同. 那为什么不可以提前先写好hashcode函数,然后在equals函数里面直接来一行if(this.hashcode() == otherObject.hashcode()) return true;else return false;就行了?

浅谈Java中的hashcode方法

哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现. 为何Object类需要这样一个方法?它有什么作用呢?今天我们就来具体探讨一下hashCode方法. 一.hashCode方法的作用 对于包含容器类型的程序设计语言来说,基本上都会涉及到has