码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象问题总结

时间:2015-11-03 22:48:08      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:

1.给成员变量赋值 方法一通过 set ,get 方法 ,方法二,通过构造方法...那为什么 代码标准格式中,这个两个方法写在一起啊?
这样写不就多此一举了吗?
答:首先要了解为什么要提供set和get方法,因为属性私有了(private),不能在外部直接访问本类中的属性,所以通过get方法在外部获取对象的属性,
通过set方法在外部给属性赋值(而且可以在内部可以进行逻辑判断),而构造方法(有参构造)主要是创建对象后直接调用,给对象的属性赋初始化值,
后期修改属性的值,用set方法。空参构造也是创建对象后调用,只是对象的属性都是默认值,如果感觉不合适,用set方法改。我们不能保证使用者到底
用哪种方式创建对象,所以既要提供空参有参构造,又要提供set和get方法。
构造方法主要是赋初始化值的,set方法主要是后期修改值的,而get方法是获取值的因为属性已经私有了!

2.类方法和成员方法分别指什么    类方法是构造方法吗 ?
答:被static关键字修饰的方法称之为类方法,是该类的所有对象所共有的公共的方法,可以用对象调用,也可以用类名直接调用,但是建议用类名调用
构造方法是创建对象后调用的,是给对象中的属性进行初始化值的,和类方法是完全不同的两个概念,但构造方法也是方法,只是写法上有区别,名称和类名保持一致,
没有返回值类型,连void都没有!不能由对象名直接调用!
3私有,静态,和构造函数分别在什么情况下用比较好

答:私有:如果对象的属性和方法不想让别人在外面直接访问的话,将属性和方法私有,用private关键字修饰,之后被private关键字修饰的属性和方法只能在本类中访问,出了本类就无法访问了,如果不私有的话,在类外可以直接访问的话,像年龄这类属性我们可以随便赋值,可以赋值为-1000,这样是不符合逻辑的,所以我不让你在类的外面直接访问属性,而是给你提供一个可以在本类外面访问的该属性的set方法,你通过方法给属性赋值,我就可以在方法内对你传递过来的值进行判断,是不是提高了安全性。
静态:如果我们发现一个类中所有的对象具有共同的属性,而且所有的对象具有的该属性的值是相同的,此时如果将该属性定义成普通的成员也可以,但是每创建一个对象,该对象的内存空间就会有一个这样的属性,这样就浪费内存空间,所以干脆定义为静态的,这样虽然所有的对象共同具有此属性,但是并没有在每个对象里都保存一份,而是将静态的东西放在了对内存方法去的静态区中,我们可以直接用类名调用,节省了内存空间。
构造方法:是在创建对象后直接调用的,给对象中的属性进行初始化的,假如没有构造方法的话,我们创建完对象后要想给对象的属性赋值,就必须调用set方法,此时如果属性非常多的话,就非常不方便!而我们说set方法主要是有了对象后,后期发现需要修改该对象属性值的时候才调用的!有了对象了,再想用对象调用构造方法修改期属性值,java是不允许的。

4.成员方法和构造方法都能完成对成员变量的赋值问题,虽然构造方法可以动态的完成对成员变量的赋值问题,那么,如果我在成员方法中运用set,get同样也能使成员方法完成对成员变量的动态赋值,那么为什么还要引入构造方法呢,或者引入成员方法呢,我们只学其中的一个不就省事多了嘛?
答:构造方法:作用是给对象进行初始化值的设置,也就是创建完对象马上调用构造方法给该对象的属性进行赋值的。
成员方法(set)是可以给对象的属性赋值,但是主要功能还是后期修改对象中属性的值。假如对象的属性非常多,创建完对象后再调用成员方法设置属性的值是不是非常麻烦!
5.为什么我们在写一个类时要属性私有,写出空参构造,有参构造,set和get方法?
答:属性私有:如果不私有,就表示属性可以在本类以外访问,那么就可以给属性随便赋值,可能这些值是不符合要求的,比如:年龄给个负数,身高给个200米,是不是不合适?所以必须将属性私有,用private关键字修饰!这样只能在本类中访问了!那在本来以外,调用者还想使用这些属性怎么办?就需要我们在本类中提供外部可以访问的get(获取值)方法和set(方法)
空参构造和set方法可以结合使用:也就是说调用者利用空参构造创建对象后,对象的属性只有默认初始化值的,是不符合要求的,那怎么赋值,就必须用到set方法赋值
有参构造:如果对象中的属性非常多,用上面先调用空参构造创建对象再利用set方法赋值的方式,很麻烦,干脆提供一个有参构造,这样调用者再创建对象时可以直接给属性赋值,如果后面发现某个属性值需要修改时,只需要调用某个set方法就可以了!

 

面向对象问题总结

标签:

原文地址:http://www.cnblogs.com/zbgyh/p/4934537.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!