码迷,mamicode.com
首页 > 编程语言 > 详细

Java 继承 不允许继承的类 不可变的类 final class

时间:2015-11-06 00:02:10      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

实例:

public final class Address
{
    private final String detail;
    private final String postCode;

    //在构造方法里初始化两个实例属性
    public Address()
    {
        this.detail = "";                                                                       
        this.postCode = "";

    }
    public Address(String detail , String postCode)
    {
        this.detail = detail;
        this.postCode = postCode;
    }
    //仅为两个实例属性提供getter方法
    public String getDetail()
    {
         return this.detail;
    }

    public String getPostCode()
    {
         return this.postCode;
    }
    //重写equals方法,判断两个对象是否相等。
    public boolean equals(Object obj)
    {
        if (obj instanceof Address)
        {
            Address ad = (Address)obj;
            if (this.getDetail().equals(ad.getDetail()) && this.getPostCode().equals(ad.getPostCode()))
            {
                return true;
            }
        }
        return false;
    }
    public int hashCode()
    {
        return detail.hashCode() + postCode.hashCode();
    }

public static void main(String args[])
{
    Address a = new Address();
    Address b = new Address("abcd","efgh");

    System.out.println("a:"+a.getDetail()+a.getPostCode()+a.hashCode());
     
    System.out.println("b:"+b.getDetail()+b.getPostCode()+b.hashCode());

    System.out.println(a.equals(b));

}
}


结果截图:

技术分享

 

原因分析:

   

final声明的方法不允许覆盖,也不允许更改,所以利用final, 我们可以设计出一种特殊的只读不可变类
 
创建不可变的类的对象后,此对象的属性不可改,而且也无法从此类派生出新子类。String就是一个典型的例子。
 
不可变的的作用
1、可以方便和安全地用于多线程环境中,
2、访问它们可以不用加锁,因而能提供较高的性能。
 
 

Java 继承 不允许继承的类 不可变的类 final class

标签:

原文地址:http://www.cnblogs.com/389629916muyachao/p/4940996.html

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