示例程序

 1 public final class Address
 2 {
 3     private final String detail;
 4     private final String postCode;
 5
 6     //在构造方法里初始化两个实例属性
 7     public Address()
 8     {
 9         this.detail = "";
10         this.postCode = "";
11     }
12     public Address(String detail , String postCode)
13     {
14         this.detail = detail;
15         this.postCode = postCode;
16     }
17     //仅为两个实例属性提供getter方法
18     public String getDetail()
19     {
20          return this.detail;
21     }
22
23     public String getPostCode()
24     {
25          return this.postCode;
26     }
27     //重写equals方法,判断两个对象是否相等。
28     public boolean equals(Object obj)
29     {
30         if (obj instanceof Address)
31         {
32             Address ad = (Address)obj;
33             if (this.getDetail().equals(ad.getDetail()) && this.getPostCode().equals(ad.getPostCode()))
34             {
35                 return true;
36             }
37         }
38         return false;
39     }
40     public int hashCode()
41     {
42         return detail.hashCode() + postCode.hashCode();
43     }
44
45     public static void main(String args[])
46     {
47         Address a = new Address();
48         Address b = new Address("dscfd","fghgh");
49
50         System.out.println("a:"+a.getDetail()+a.getPostCode()+a.hashCode());
51
52         System.out.println("b:"+b.getDetail()+b.getPostCode()+b.hashCode());
53
54         System.out.println(a.equals(b));
55     }
56 }

结果截图

分析:

以final声明的方法不允许覆盖。

以final声明的变量不允许更改。

利用final,我们可以设计出一种特殊的“只读” 的“不可变类”。

创建“不可变的类”的对象后,此对象的属性不可改,而且也无法从此类派生出新子类。String就是一个典型的例子。

不可变的“类”有何用?

可以方便和安全地用于多线程环境中, 访问它们可以不用加锁,因而能提供较高的性能。

JDK中的实例:String

转载于:https://www.cnblogs.com/weipinggong/p/4938896.html

接口与继承:不允许继承的类相关推荐

  1. 基类显式继承接口,类继承基类时又继承同一接口,引发接口方法混乱(显式继承接口的弊端)...

    基类BaseOutput显式继承了一个接口IOutput,之后类TrackOutput继承BaseOutput,同时又继承了IOutput接口,假定IOutput有方法Output,这样在TrackO ...

  2. 接口可以继承接口吗,抽象类可以继承接口吗,抽象类可以继承实体类吗?

    1.接口可以继承接口,抽象类不可以继承接口,但可以实现接口. 2.抽象类可以继承实体类.抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数. 3.抽 ...

  3. C++多继承中重写不同基类中相同原型的虚函数

    在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA  {  public:  virtual void TestA();  };  class ...

  4. java父类转子类_java中什么是继承,和继承的接口的关系?

    继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父 ...

  5. 接口方法javadoc注释_继承Javadoc方法注释

    接口方法javadoc注释 尽管用于javadoc工具的JDK工具和实用程序页面通过实现和继承方法来描述Javadoc方法注释重用的规则,但是当实际上不需要使用{@inheritDoc}时,很容易不必 ...

  6. java 关注公众号没有调接口_深入理解Java继承、封装、多态的实现原理

    点击关注上方"Java技术江湖",设为"置顶或星标",第一时间送达技术干货. 作者:黄小斜 文章来源:微信公众号[Java技术江湖] 目录 从JVM结构开始谈多 ...

  7. 9-2:C++多态之纯虚函数和抽象类以及接口继承和实现继承

    文章目录 (1)纯虚函数和抽象类的概念 (2)抽象类的意义 (3)接口继承与实现继承 (1)纯虚函数和抽象类的概念 如果一个类的虚函数后面写上=0,同时不写它的实现,那么这样的虚函数称之为纯虚函数,包 ...

  8. C++ 接口继承与实现继承的区别和选择

    1.接口继承与实现继承的区别 <Effective C++>条款三十四:区分接口继承和实现继承中介绍的比较啰嗦,概括地说需要理解三点: (1)纯虚函数只提供接口继承,但可以被实现: (2) ...

  9. C++中的接口继承和实现继承

    C++中的接口继承和实现继承 很多人认为,C++中是不存在接口继承的,只有Java.C#这类语言才提供了相应的语法支持. 但是,如同鲁迅说过的某句名言:世上本没有接口继承,用的人多了,才有了接口继承. ...

  10. 读书笔记 effective c++ Item 34 区分接口继承和实现继承

    看上去最为简单的(public)继承的概念由两个单独部分组成:函数接口的继承和函数模板继承.这两种继承之间的区别同本书介绍部分讨论的函数声明和函数定义之间的区别完全对应. 1. 类函数的三种实现 作为 ...

最新文章

  1. Android studio 代码字体模糊的处理方法
  2. 【整理总结】Visual Studio 扩展和更新
  3. 用c语言实现随机无向图的生成,C ++程序为给定数量的边生成随机无向图
  4. devtools 无法加载 sourcemap_用 babel-plugin 实现按需加载
  5. 微服务部署:蓝绿部署、滚动部署、灰度发布
  6. Windows和Linux DNS Cache清理
  7. 远程桌面管理工具Remote Desktop Connection Manager
  8. postgresql 客户端启动配置
  9. 华为设备配置VRRP,实现设备网关冗余备份
  10. 史上最全微信域名防封API原理及实现方案
  11. BIOS实战之HW monitor
  12. (P57-P61)正则表达式
  13. JAVA 实现《JAVA打砖块》游戏
  14. 中移物联网2018笔试题
  15. NOIP2017模拟赛(4) 总结
  16. Discuz 批量修改、替换帖子标题或内容
  17. CPU RISC-V技术
  18. unix cat命令
  19. Legolas工业自动化平台入门(三)交互事件响应动作
  20. linux服务器光衰,linux下怎么查看光模块光功率

热门文章

  1. chkconfig用法
  2. c# winform 让Form窗体上系统自带的红色关闭按钮失效,点击关闭变为隐藏
  3. 知方可补不足~说说吧!timestamp有什么用?
  4. PHP设计模式——访问者模式
  5. PHP设计模式——抽象工厂
  6. 嵌入式Linux驱动笔记--转自风筝丶
  7. 在sae中运行web.py应用
  8. js批量向html容器内的元素赋值
  9. 玉伯 对 前端的 金玉良言
  10. HTTP权威协议笔记-6.代理