专栏首页Java小王子通过getter和setter方法访问和修改
原创

通过getter和setter方法访问和修改

1.可以改变内部实现,除了该类的方法外,不会影响其他代码。

private String firstName;
private String lastName;
public String getName(){
return firstName + "" + lastName;
}

2.setter方法可以执行错误检查,比如检查数据是否合乎规范,输入的age是否小于0,直接对域操作则没这种优势

3.可细微划分访问控制:可以只设置域访问器getter,不设置域修改器setter,让用户只能读取,而不能修改。而public既可以读取,也可以修改,可能造成数据不安全。

继承

是一种类的层次模型,从现有的类中通过extends关键字派生新类,现有的类称为父类,新类称为子类。 子类可以从它的父类那里继承方法和实例变量,并且可以重写父类的方法和增加新的方法。一般将通用的方法放到超类中,具有特殊用途的方法放到子类中。 特点:

  1. 不能多重继承。
  2. 只能继承非私有的成员变量和方法
  3. 当子类成员变量与父类成员变量重名时,子类覆盖父类。
  4. 定义为final的类不可继承,定义为final的方法不可以被重写。

多态

  • 指允许不同类的对象对同一消息(即同一个方法的调用)做出响应。即同一个方法的调用,可以根据调用这个方法的对象的不同而实现不同的功能。
  • 在Java核心技术第5章中定义: 实现多态的技术称为:动态绑定(dynamic binding),是指在运行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
  • 多态的作用:降低类型之间的耦合关系。 把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

例子

  • 比如: 如果我们定义
Animal animal = new Cat();   //表示我定义了一个Animal类型的引用,指向新建的Cat类型的对象

或者

Cat cat = new Cat();

如果我要改为子类Dog类,那么前者只需要修改一行代码,不需要改实例名,后者要大量改动。

Animal animal = new Dog();
  • 再比如: 你可以设计一个接口:DataBaseDao 然后,每个不同的数据库,你可以编写接口的实现类,比如:SQLServerDao, MySqlDao, DB2Dao等等

当用户使用你框架的时候,他就可以用多态,实现自己的数据库连接功能: DaoBaseDao dao = new SQLServerDao(); //针对SQLServer的接口实现,这里dao就是多态 dao.connect();

  • 再比如: 现实中,关于多态的例子不胜枚举。比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。

但注意:父类类型的引用可以调用父类中定义的所有属性和方法,而对于子类中定义而父类中没有的方法,它是无可奈何的;比如子类中增加的方法,父类引用无法调用。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Objective-C中的属性机制

            Objective-C 2.0中的属性机制为我们提供了便捷的获取和设置实例变量的方式,也可以说属性为我们提供了一个默认的设置器和访问器的实现。在...

    lizelu
  • Java Getter和Setter

    Author:杭州电子科技大学 2016级管理学院 工商管理 唐涛 16011324@hdu.edu.cn

    用户3906512
  • OC知识--成员变量(属性,实例变量)的相关知识

    程序员充电站
  • iOS @property探究(一): 基础详解你要知道的@property都在这里

    你要知道的@property都在这里 本文大纲 Apple Adopting Modern Objective-C翻译 @property基本用法 @prope...

    WWWWDotPNG
  • Objective-C属性(property)的特性(attribute)

    以下:「attribute(s)」,「特性」是指同一事物(都指@property后面括号内的单词)。

    iOS Development
  • TW洞见〡getter和setter的那些事

    文章作者来自ThoughtWorks:佟达 相信每一个以Java或者C++作为编程入门语言的程序员,一定会记得一条金科玉律:字段(Filed)要声明成priv...

    ThoughtWorks
  • 盘点JavaScript中getter()和setter()函数的使用

    第一种是 数据属性。已经知道如何使用它们了。到目前为止,使用过的所有属性都是数据属性。

    前端进阶者
  • Scala面向对象编程之类和对象

    调用方法也可以不加括号,如果定义方法时不带括号,则调用方法时也不能带括号 (2)getter与setter 定义不带private的var field,此时...

    魏晓蕾
  • Java Getter/Setter “防坑指南”

    Getter/Setter 在 Java 中被广泛使用,看似简单,但并非每个 Java 开发人员都能很好理解并正确实现 Getter/Setter 方法。因此,...

    乔戈里
  • getter与setter

    getter是一个获取某个属性的值的方法,setter是一个设定某个属性的值的方法。

    WindrunnerMax
  • 为什么不需要为Python对象添加 getter 和 setter

    用户2176428
  • JavaWeb(十一)JavaBean

    leeqico
  • PyCharm插件开发实践-PyGetterAndSetter

    在面向对象的设计中,典型如Java语言,为了控制对象属性的修改入口,我们常用的做法是把属性设置为private,然后通过getter和setter方法访问、修改...

    于果
  • iOS基础·属性的修饰词与setter的关系

    可以自己手动为实例变量在头文件 中声明setter、getter方法,并在实现文件中实现setter、getter方法。你也可以不声明不实现,但不要再企图调用s...

    陈满iOS
  • Scala 学习笔记之类

    在Scala中,类并不声明为public. Scala源文件可以包含多个类,所有这些类都具有公有可见性.属性不声明默认为public.

    smartsi
  • Yii框架getter与setter方法功能与用法分析

    本文实例讲述了Yii框架getter与setter方法功能与用法。分享给大家供大家参考,具体如下:

    砸漏
  • 为什么要用Getter和Setter方法,而不是公开属性

    大多数字段的访问都是通过Getter和Setter方法来间接访问,为什么不直接将字段设置为公开属性Public呢?答案在于前者的未来可能性。当我在Java语言编...

    三哥
  • Scala-8.面向对象-构造函数

    悠扬前奏
  • JavaScript数据属性和访问器属性

    看《深入理解JavaScript》的this篇时看到“访问器属性”这个不熟悉的名词,百度后找到两篇感觉比较合适的文章,整合记录一下,以参考资料2为主,参考资料1...

    WindCoder

扫码关注云+社区

领取腾讯云代金券