Java SE的学习心得(二)对象怎么排序?非数字的内容排序规则怎么确定?抽象类也能实现接口?

摘要:本篇文章讨论了:抽象类实现接口时要注意的一些点;类的私有成员能不能被自己的对象访问、如何访问的介绍;关于synchronized锁的一些小知识;内部类如何对外部类进行访问,普通的成员内部类如何实例化;以及大家可能会好奇的一些问题:“对象如何排序?”“非数字排序的规则怎么定?”这些内容是作者在学习过程中或因好奇、或因应用产生的问题的总结,希望可以帮到大家、能对大家有所启发,点点关注不迷路!

一、抽象类也可以实现接口

        实现了接口的抽象类可以先不重写接口中的抽象方法,但是继承了该抽象类的类必须实现接口中的抽象方法,除非继承了该抽象类的类还是一个抽象类。必须要被实现的类在一代代继承时是逐渐叠加的。

二、类的对象用“.”运算符访问本类的私有成员,并非不可能!

        类的对象只有在类的内部能通过“.”运算符调用私有成员,在类的外部,即便是类的对象,也不能用“.”调用类的私有成员,只能用getter和setter。

三、synchronized锁

        synchronized锁又被称为“隐式锁”,在同步代码块使用它时不仅可以用

        “synchronized(this){

}”

锁当前实例对象,还可以有“类锁”:

        “synchronized(类名.class){

        }”

适用于静态方法和静态变量的同步
        其中类名.class称为类对象,可通过类名.class属性 ,或者类名.getclass()方法获取类对象。

四、内部类对外部类的访问相关

        成员内部类(即普通的内部类)可以访问外部类的所有成员(包括私有成员)。外部类若要访问内部类的成员,需要先创建内部类的对象。(创建内部类对象过程如下:

        类名 r = new 类名();
        类名.内部类名 l = r.new 内部类名();
)

        静态内部类只能访问外部类的静态成员,而且静态内部类可以独立于外部类的实例存在,可以直接通过类名创建静态内部类的对象。

        另外:使用private修饰的内部类成员只能在其所在的外部类中被访问。

五、不愧是Java!“对象”也能排序?

        要想对“对象”进行排序,可以让类实现Comparable接口,这样就可以对该类型对象的数组或集合直接使用Arrays.sort(Collections.sort(是集合时用这个方法))进行排序,如果没有Comparable接口,会抛出异常。这种方式被称为“内排序”或“自然排序”
        或者用Comparator接口,用一个匿名内部类(或者实现这个接口的类)定义排序方式,然后把该实现了Comparator的类的对象作为参数,传入sort方法(sort(数组或集合,排序方式对象)),这种方式被称为“外排序器”。

        总结:Conparable接口是由对象数组或者对象集合中的对象的类所实现,实现后这种对象就拥有比较的方法,因此称为内排序或者自然排序。Comparator接口是外部提供的对两个对象的比较方式的实现,对象本身并没有比较的方式,因此被称为外排序器。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值