Java核心技术2:怎么学习类的高级特性

类除了具有普通的特性之外,还具有一些高级特性,如包、内部类等。本篇经验将向您介绍包的创建规则、在程序中导入其他类包、掌握final变量据、方法、类、掌握内部类。下面的经验每张图的代码都是一个字一个字地手输的,内容都是一个字一个字地打上去的,怎么不是原创的呢,搞不懂?

一、JAVA类包

  • 01

    在java中每定义好一个类,通过java编译器编译之后,都会生成一个扩展名为.class的文件,当这个程序的规模逐渐庞大之后,就会产生类重名的现象。那么JDK API中提供的成千上万的具有各种功能的类,又是如何管理的呢?java中提供了一种管理类文件的机制,那就是类包。

  • 02

    1、完整的类路径 一个完整的类名需要包名与类名的组合,每个类都属于一个类包,只要保证同一类包中的类不重名,就可以有效地避免同名类的情况。 例如:在程序中使用两个不同Date类的完整类路径,可以使用如下代码: java.util.Data data=new java.util.Data(); java.sql.Data  data2=new java.sql.Data();

  • 03

    2、创建包 创建包的步骤如下: a、在项目的src节点上单击鼠标右键,选择“新建”/“包”;

  • 04

    b、弹出“新建java包”对话框,在“名称”文本框中输入新建的包名,单击“完成”

  • 05

    在类中定义包名的语法如下: package  包名; 在类中指定包名时需要将package表达式放置在程序第一行,它必须是文件中第一行非注释代码,当使用package关键字为类指定包名之后,包名将会成为类名的一部分。

  • 06

    3、导入包 a、使用import关键字导入包 import关键字的语法如下: Import 包名;                     指定包名中的所有类都可以使用 Import包名.类名;              指定包名中的类名可以使用 在使用import关键字时,可以指定类的完整描述,如果为了使用包中更多的类,可以在使用import关键字指定时在包指定后加上*,这表示可以在程序中使用包中所有的类

  • 07

    b、使用import导入静态成员 使用import导入静态成员的语法如下: Import static 静态成员;

  • 08

    举例如下:

二、final变量

  • 01

    final可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。 例如,在类中定义PI的值可以使用如下语句: final double PI=3.14;

  • 02

    被定义为final的常量定义时需要使用大写字母命名,并且中间使用下划线连接,这是java中的编码规则。同时,定义为final的数据无论是常量、对象引用还是数组,在主函数中都不可以被改变

  • 03

    为了使一个常量真正做到不可更改,可以 将常量声明为static final。 举例如下:

  • 04

    下图中清晰地表明了在程序中哪些位置可以定义final数据

三、final方法

  • 01

    定义为final的方法不能被重写,将方法定义为final类型可以防止子类修改该类的定义与实现方式,同时定义为final的方法的执行效率要高于非final方法,在修饰权限中曾提到过private修饰符,如果一个父类的某个方法被设置为private修饰符,子类将无法访问该方法,自然无法覆盖该方法,所以一个定义为private的方法隐式被指定为final类型,这样无需将一个定义为private的方法再定义为final类型。 例如: private final void test(){ }

  • 02

    但是在父类中被定义为private final的方法似乎可以被父类覆盖, 举例如下:

  • 03

    从上面的例子中可以看出,final方法不能被覆盖,例如doit2()方法不能在子类中被重写,但是在父类中定义了一个private final的doit()方法,同时在子类中也定义了一个doit()方法,从表面上看,子类覆盖了父类,但必须满足一个对象向上转型为它的基本类型并调用相同方法这样一个条件。可见子类的doit()不是正常覆盖,而是生成了一个新的方法。

四、final类

  • 01

    定义为final的类不能被继承,如果允许一个类不被任何类继承,并且不允许任何人对这个类有改动,可以将这个类设置为final类。

  • 02

    final类语法如下: final 类名{}

  • 03

    如果将某个类设置为final形式,则类中的所有方法都被隐式设置为final形式,但是final类中的成员变量可以被定义为final或非final类形式。 举例如下:

五、内部类

  • 01

    1、成员内部类 a、内部类成员介绍 成员内部类语法如下: public class 外部类{ private class 内部类{ } }

  • 02

    在内部类中可以随意使用外部类的成员方法及成员变量,尽管这些成员被修饰为private. 内部类的实例一定要绑定在外部类的实例上。如果从外部类中初始化一个内部类对象,那么内部类对象就会绑定在外部类对象上。内部类初始化也使用关键字new.

  • 03

    举例说明:

  • 04

    b、内部类向上转型为借口 如果将一个修饰权限为private的内部类向上转型为其父类对象,或者直接向上转型为一个接口,在程序中就可以完全隐藏内部类的具体实现过程,可以在外部提供一个接口,在接口中声明一个方法,如果再实现该接口的内部类中实现该接口的方法,就可以定义多个内部类以不同的方式实现接口中的同一个方法,而在一般的类中是不能多次实现接口中的同一方法的。

  • 05

    举例如下:

  • 06

    c、用this关键字获取内部类与外部类的引用 如果在外部类中定义的成员变量与内部类的成员变量名称相同,可以使用this关键字。

  • 07

    举例说明: 在内部类中使用this语句可以调用内部类的成员变量,而使用theSameName.this.x语句可以调用外部类的成员变量x。

  • 08

    2、局部内部类 内部类中不仅可以在类中进行定义,也可以在类的局部位置进行定义,如在类的方法或任意的作用域中均可以定义内部类。

  • 09

    3、匿名内部类 匿名内部类的语法如下; return new A(){ } A为类名

  • 10

    4、静态内部类 静态内部类具有以下两个特点: 如果创建静态内部类的对象,不需要其外部类的对象; 不能从静态内部类的对象中访问非静态外部类对象; 举例说明:

  • 11

    在静态内部类中定义主方法:

  • 12

    5、内部类的继承 内部类和普通类一样可以被继承,但需要比较复杂的专门设置的语法结构,在某个类继承内部类时,必须硬性给以这个类一个带参数的构造方法,并且该构造方法的参数为需要继承内部类的外部类引用,同时在构造方法体重使用a.super()语句才为继承提供了必要的对象引用。

(0)

相关推荐

  • 以win7为例谈NTFS的高级特性和应用

    微软从Windows 2000开始引入了NTFS文件系统,但此时用户可以选择将系统安装在非NTFS格式的分区中。到了当前,Windows 7却只能安装在NTFS格式中了。这其中我们可以看到微软对NTF ...

  • Notepad++配置C/C++、C#、Java、Python编译环境详细教程

    如果只是测试小程序可以用这种方法 比较方便,如果对于大程序建议使用专业的IDE. 经常需要写一些小程序来运行,又不想运行Visual Studio.Eclipse这样的环境,而Notepad++是一个 ...

  • 阿里云PHP环境

    整体介绍: Aliyun Cloud Engine (以下简称ACE)提供基于PHP 5.3.5的运行环境(Runtime Environment),支持标准的关系型数据库、Memcache、Cron ...

  • eusexe.exe进程安全吗 可以结束吗 eusexe进程信息查询

    进程文件: eusexe or eusexe.exe 进程名称: ICH Synth 进程类别:存在安全风险的进程 英文描述: eusexe.exe is associated with the so ...

  • FREEBSD手工配置网络

    在FreeBSD系统中,网络能力十分重要,对于一个标准的FreeBSD系统,至少要有一个网络界面以便与其他计算机通信。最常见的网络界面为以太网卡。此外FreeBSD也支持Token Ring和FDDI ...

  • 提示Cannot display this video mode(不能显示此种视频模式)的解决

    安装我的显示器时,屏幕显示"Cannot display this video mode"(“不能显示此种视频模式”),我该怎么办? 答: 飞利浦显示器之建议视频模式为:1280x1024@60赫兹。 ...

  • BIOS设置图解教程(AWARD BIOS和AMI BIOS)

    BIOS主要有两类∶AWARD BIOS和AMI BIOS。正确设置BIOS可大大提高系统性能。 第一部分、AWARD BIOS设置 一、进入 BIOS 设置 电脑刚启动,出现如下图1画面时。 图1 ...

  • 交换式路由器与路由式交换机简析

    现在路由器和交换机之间的区别也越来越模糊,多层路由器与交换机都可以同时实现交换和路由的功能,它们之间还有不同吗?各自特点何在?如何更好地根据应用需求进行选择? 一、传统的交换机和路由器 普通交换机工作 ...

  • 如何将磁盘从FAT格式转换为NTFS格式的方法步骤

    本文描述了如何将磁盘从FAT格式转换为NTFS格式。在确定使用何种文件系统前,您应当对它们各自的优势与局限性有所了解。 改变卷所使用的现有文件系统将是一项非常耗时的工作,因此,您应选择最适合自身长远需 ...