文档章节

JAVA语法(2)

 子易乐
发布于 2017/02/28 22:54
字数 2623
阅读 13
收藏 0

可以将一组相关的类或接口封装在包(package)里,从而更好地管理已经开发的Java代码。这里的包(package)也可以称作软件包

包声明语句的格式是:

package 包名;

包声明语句要求是定义类或者接口、枚举类型的Java源程序文件的第一条语句,且必须是该文件的第一条语句。

包名可以是一个标识符,也可以由若干个标识符通过句点“.”连接而成。其中包名的前几个标识符是所在单位的Internet域名的倒序,最后一个标识符是一个可以概括该软件包功能的标识符。例如:package cn.edu.tsinghua.universityOrganization;

如果需要使用在软件包中的类或者接口或者枚举等,则需要导入包的语句。导入包的语句一般是在Java源程序文件中除了包声明语句之外的最前面的若干条语句。导入包语句的格式有三种,分别为:

(1)import 包名.*;   //将整个包的类或者接口或者枚举等导入到当前的程序中

(2)import 包名.类型名;  //将指定的类型导入到当前的程序中

(3)import static 包名.类型名.静态成员方法名; //将指定的静态成员方法导入

导入包语句的使用原则是尽量使用比较后面的导入包语句形式,否则会增加程序的内存开销,并在一定程度上降低程序的编译效率。导入包时,当前路径下不能包含有相应后缀为‘.java’的Java源程序文件以及编译生成的后缀为“.class”的文件。

每个软件包都有一个包名,而且在包与包之间没有嵌套关系,即任何包都不会包含其他包。例如,软件包 cn.edu.tsinghua.univers  不是软件包 cn.edu.tsinghua 的子软件包。导入包语句 import cn.edu.tsinghua.* 不能代替导入包语句 import cn.edu.tsinghua.univers.* 在导入软件包的过程中,软件包根路径由系统变量classpath确定。

在Java系统提供的软件包中,有一个软件包比较特殊,即 软件包“java.lang”。它是Java语言的基本软件包。即使不通过导入语句,Java语言也会为所有的Java程序自动导入该软件包。软件包“java.lang”提供Java程序所需要的最基本的类和接口,其中比较常用的类包括Object、Boolean、Byte、Character、Double、Float、Integer、Long、Short、Math、String、StringBuffer、Sysem等。

类Object:是在Java语言中除Object本身之外所有类的父类。

类Boolean、Byte、Character、Double、Float、Integer、Long和Short分别是Java八种基本数据类型的包装类。

类Math:提供各种数学计算方法。

类StringBuffer:用来编辑自丈夫序列。

类System:提供各种与标准输入和标准输出相关的功能,访问外部定义的属性和环境变量的功能,加载文件和库的功能,以及进行快速数组复制等功能。

封装性

类成员的访问控制模式及其允许访问范围

访问控制模式

在同一个类内

在同一个包内

子类

所有类

公共模式(public)

允许访问

允许访问

允许访问

允许访问

保护模式(protected)

允许访问

允许访问

允许访问

 

默认模式(default)

允许访问

允许访问

 

 

私有模式(private)

允许访问

允许访问

 

 

 

修饰词

三个常用修饰词:abstract(抽象)、static(静态)和final(最终)。abstract不能和其他两个修饰词组合在一起。

修饰词abstractJava允许类、接口或成员方法具有抽象属性,但不允许成员域或者构造方法具有抽象属性。无法通过抽象类的构造方法生成抽象类的实例对象。不管定义接口的修饰词是否含有关键字abstract,接口总是具有抽象属性

抽象类的应用方法:在定义抽象类型后,可以将该分类中的各个类型定义成为该抽象类型的子类型。这样,如果要生成抽象类型的实例对象,则可以通过这些子类型的构造方法来实现。如果抽象类型的子类型不是抽象类型,在要求在该子类型的定义中必须定义覆盖抽象类型的所有抽象方法。这里的覆盖指的是在多态性中的覆盖,即定义除封装性之外相同声明的成员方法。这样根据动态多态性,可以通过抽象类型的表达式访问抽象类型的成员域以及调用这些被覆盖的成员方法。

 

         抽象成员方法定义格式为:

[方法修饰词列表]  返回类型  方法名(方法的参数列表);

抽象成员方法修饰词列表中含有关键字abstract,且该方法只能定义在抽象类的类体或定义接口的接口体中。

抽象成员方法定义格式与不具抽象属性的成员方法的定义格式之间的区别:除了是否含有修饰词abstract之外,抽象成员方法的定义以分号结束,而且不含方法体;而不具有抽象属性的成员方法的定义在成员方法声明之后不能立即出现分号,而且必须含有方法体。

 

修饰词static

具有关键字 static(静态)的成员域或成员方法,成为静态成员域或静态成员方法。例如,作为Java应用程序入口的main成员方法是一个静态成员方法。类本身也可以看做一种对象,简称为类对象。类的静态成员隶属于该对象,可通过类名直接调用。格式是:

类名.静态成员域名     或   类名.静态成员方法名

 

修饰词final

关键字final(最终)可用来修饰不具有抽象属性的类、类的成员域、接口的成员域以及类的不具有抽象属性的成员方法。具有最终属性的类不能作为父类,不能派生出子类。如:类java.lang.System的声明是

public final class Sysem extends Object  说明java.lang.System具有最终属性,因此类java.lang.System不具有子类。

内部类(inner class)

在类体内部定义的类,内部类坐在的类称为外部类。按照内部类是否含有显示的类名,分为“实名内部类”和“匿名内部类”,实名内部类定义格式是:

[类修饰词列表] class 类名 [extends 父类名] [implements 接口名称列表]

{

         类体

}

含有关键字static的内部类,称为静态实名内部类。对于不具有静态属性的实名内部类,如果它的成员域具有静态属性,则必须同时具有最终(final)属性。不具有静态属性的实名内部类不能含有具有静态属性的成员方法。

 

匿名内部类不具有类名,不能具有抽象和静态属性,并且不能派生出子类。定义匿名内部类的定义可以采用格式:

new 父类型名(父类型的构造方法的调用参数列表)

{

         类体

}

匿名内部类不含类型,所以在匿名内部类的类体中一般不能显示地定义构造方法。匿名内部类的定义格式定义并创建了匿名内部类的实例对象,它所调用的构造方法实际是父类型的与其调用参数相匹配的构造方法,或者是由Java虚拟机自动生成的不含任何参数的构造方法。

 

 

接口

Java语言规定任何子类只能有一个直接父类,但Java语言允许一个类实现多个接口,从而实现多重继承的特性。在同一个Java源文件中可以包含多个类或接口,但不能包含两个或两个以上的具有public修饰词的类或接口。接口的定义格式是:

 

[接口修饰词列表]  interface  接口名 [extends 接口名称列表]

{

         接口体

}

 

其中:

         “[  ]”:表示其内部的内容是可选项;

         接口修饰词列表:可以包括0个或多个接口修饰词;接口修饰词包括public、abstract和strictfp等。接口一般不能具有protected和private属性。

         接口名:可以是任意的合法标识符。

         extends 接口名称列表:当前定义的接口可以继承1个或多个父接口,相邻两个接口名称之间采用逗号分隔。

 

接口体:定义接口的两类成员要素“成员域”和“成员方法”。

接口的成员域的定义格式为:

 

[域修饰词列表] 类型 带初始化的变量名列表;

 

         修饰词列表:即使不包含修饰词,接口的所有成员域都具有public、static和final属性。

接口的成员方法只能是抽象成员方法,其定义格式为:

 

[方法修饰词列表]  返回类型 方法名(方法的参数列表);

 

         修饰词列表:即使不包含修饰词,接口所有方法也具有public和abstract属性;

         返回类型:数据类型,不返回值需要写关键字void;

方法参数列表:可包含0个或多个参数,不能写关键字void;格式:类型 参数变量名

        

接口的应用方法非常类似于抽象类,知识通过接口在一定程度上可以实现多重继承。在实现接口的类中,除抽象类之外,要求在该类的类体中定义覆盖该接口的所有成员方法。若生成接口的实例对象,可通过实现接口的类的构造方法来实现。根据继承性,实现接口的类的实例对象也可以被认为是该接口的实例对象。访问接口成员的格式如下:

接口名.静态成员域名   或  表达式.成员域名

表达式.成员方法名(成员方法调用参数列表)

接口定义的程序示例:

interface J_Shape

{

         public static final double PI=3.1415926;

         public abstract double mb_getArea();  //计算并返回形状的面积

}  //接口J_Shape结束

© 著作权归作者所有

下一篇: JAVA语法(1)
粉丝 0
博文 17
码字总数 18498
作品 0
西安
私信 提问
加载中

评论(0)

Java反编译工具CFR,Procyon简介

Java反编译工具有很多,个人觉得使用最方便的是jd-gui,当然jad也不错,jd-gui主要提供了图形界面,操作起来很方便,但是jd-gui很久没有更新了,java 7出来很久了,jd-gui在反编译java 7的cla...

osc_g15m0z3m
2018/11/14
31
0
【转】Java代码编译过程简述

转载:https://blog.csdn.net/fuzhongmin05/article/details/54880257。 代码编译是由Javac编译器来完成,流程如下图1所示: 图1 Javac是一种编译器,能将一种语言规范转化成另外一种语言规范...

osc_vgepqglw
2019/05/10
2
0
大数据开发培训:0基础学习Java编程语言有哪些知识点?

Java 技术通用、高效、具有平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,学习Java首先要知道学习知识点有哪些。在这就用加米谷大数据培训...

加米谷大数据
2018/07/25
2
0
2018年12月20日;第一章初识java作业

本次课程所有的编译程序下载地址: 链接:https://pan.baidu.com/s/1iidu1AefS4b_K25uV5k8jA 提取码:wcda 复制这段内容后打开百度网盘手机App,操作更方便哦 一、作业 1、请写出Java程序执行...

osc_57loaj8m
2018/12/20
3
0
大数据<javaSE + Linux精英实训班>_day_01

1:基础语法->java概述 java是一门编程语言,用来编写软件。 2:基础语法->常用DOS命令 打开:windows+r 进入:cd 返回上一级目录:cd .. 查看当前的目录:dir(ll/ls) 3:基础语法->java开发环...

osc_r4nb21xx
2018/03/13
1
0

没有更多内容

加载失败,请刷新页面

加载更多

如何用数据结构解释计算机系统 常用数据结构

详细:https://www.cnblogs.com/morui/p/10726864.html 数据结构(计算机存储、组织数据方式) 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元...

osc_rnx2cje5
9分钟前
16
0
黑客你咋这么牛掰,不屑用鼠标?

如需快速跳转,请戳以下蓝色字条 01 前情提要 02 有苦说得出 1、黑客开发绝大多数工具是没有图形化界面的 2、命令行更有助于批量操作 3、图形化界面消耗系统资源量大,增加计算机性能负担 4、...

osc_m6gaz63w
10分钟前
7
0
计算机网络TCP/IP模型复习笔记(随时补充)

看到一篇大佬的博客,刚好前段时间也有简单了解了一点计算机网络的TCP/IP,就顺便总结一下。 大佬文章链接: https://blog.csdn.net/ThinkWon/article/details/104903925 计算机网络的自己理...

osc_boqyoaed
12分钟前
7
0
IDEA使用技巧-->查看类的继承关系图

IDEA使用技巧-->查看类的继承关系图 简单实用(很实用) 转自 ☞https://www.cnblogs.com/deng-cc/p/6927447.html 最近忙,有用的直接拿来给大家分享,但凡分享的都是我亲测有效的!...

宇宝
13分钟前
21
0
浏览器同源政策及其规避方法

自己以思维导图的形式梳理了一遍 浏览器同源政策及其规避方法

酒窝yun过去了
13分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部