(三) Java的包和修饰符,Java的接口【Java无难事】

1.        

为了便于管理大型软件系统中为数众多的类

1)         package 必须为第一条语句,如果不加 package 语句,则指定为缺省包或无名包,在 package 语句中,用 “.” 来指明包(目录)的层次。

package + 包名 ;          包名 = 包名 1. 包名 2. ……包名 n;

把创建的类 .class 放到包名目录下 ( 当前路径名的包名文件夹中 )

2)         创建 .class 文件

Usage: javac <options> <source files>

where possible options include:

  -g                        Generate all debugging info

  -g:none                   Generate no debugging info

  -g:{lines,vars,source}    Generate only some debugging info

  -nowarn                   Generate no warnings

  -verbose                   Output messages about what the compiler is doing

  -deprecation              Output source locations where deprecated APIs are used

  -classpath <path>         Specify where to find user class files

  -sourcepath <path>        Specify where to find input source files

  -bootclasspath <path>     Override location of bootstrap class files

  -extdirs <dirs>           Override location of installed extensions

  -d <directory>            Specify where to place generated class files

  -encoding <encoding>       Specify character encoding used by source files

  -source <release>         Provide source compatibility with specified release

  -target <release>         Generate class files for specific VM version

  -help                     Print a synopsis of standard options

javac –d<directory> 类名 .java;

运行程序时必须把 classpath 设置为顶层包名的所在目录,或在所在目录直接去运行“命令提示符” ­

3)         引入包中的类

import 语句, Java 包自动引入

引入包中单一的类:

import       java.io.File;

引入整个包:

improt       java.java.io.*;

在同一包中的类可以互相引用,无需 import 语句。

2.         类的说明符

n  类的访问说明符

(1)     public

源代码太多时,可以用通配符 * ,表示编译所有目录下的 .Java 源文件

(2)     default( 默认 )

凡是缺省类必须在同一个包中才能被访问

n  类的其他说明符

(1)     final                      最终类不可以被 extends

(2)     abstract                抽象类不可以被实例化

3.         方法的说明符

访问说明符

public

protect

default

private

同类

ü   

ü   

ü   

ü   

同包

ü   

ü   

ü   

 

子类

ü   

ü   

 

 

通用性

ü   

 

 

 

n  方法的访问说明符

  (1) public

  (2) protected

  (3) default( 不加访问说明符时 )

  (4) private

n  方法的其它修饰符

(1) static

(2) final

(3) abstract

(4) native

(5) synchronized

4.         final 方法

n  为了确保某个函数的行为在继承过程中保持不变,并且不能被覆盖( overridden ),可以使用 final 方法。

n  为了效率上的考虑,将方法声明为 final ,让编译器对此方法的调用进行优化。要注意的是:编译器会自行对 final 方法进行判断,并决定是否进行优化。通常在方法的体积很小,而我们确实不希望它被覆盖时,才将它声明为 final

n  class 中所有的 private static 方法自然就是 final

5.         abstract 抽象方法和抽象类

n  在类中没有方法体的方法,就是抽象方法。

n  含有抽象方法的类,即为抽象类。

n  如果一个子类没有实现抽象基类中所有的抽象方法,则子类也成为一个抽象类。

n  我们可以将一个没有任何抽象方法的类声明为 abstract ,避免由这个类产生任何的对象。

n  构造方法、静态方法、私有方法、 final 方法不能被声明为抽象的方法。

6.         native 方法

n  native 方法是用户在 Java 中可以使用,但不能编写的方法。

n  JNI(Java Native Interface) ,它允许 Java 虚拟机 (JVM) 内部运行的 Java 代码能够与用其它编程语言 ( C C++ 、汇编语言 ) 编写的应用程序和库进行互操作。

n  JNI 最大的好处是它没有对底层 Java 虚拟机的实现施加任何限制,因此, Java 虚拟机厂商可以在不影响虚拟机其它部分的情况下添加对 JNI 的支持。程序员只需编写一种版本的本地 (Native) 应用程序和库,就能够与所有支持 JNI Java 虚拟机协同工作。

n  JNI 可以理解为 Java 和本地应用程序之间的中介。

基本流程:

1.       write the java code —— HelloWorld.java —— 2. use javac to complie HelloWorld —— HelloWorld. class —— 3. Use javah –jni to generate HelloWorld header file. —— HelloWrold.h —— 4. write the implementation of the native method(jni.h stdio.h) —— HelloWorldInp.c —— 5. Compile the native code and load the shared library —— hello.so/hellow.dll —— 6.Run the program using the java interpreter —— >”Hello World”

 
 
 

 

7.         Java 中的垃圾回收

Java 虚拟机调用 (Java.lang)object; finalize 垃圾回收作为第一优先级运行

8.         接口

implements 类实现接口方法,使用类直接调用接口类去实例化对象

n  接口中所有的方法都是 public abstract

n  在接口中声明方法时,不能使用 native static final synchronized private protected 等修饰符。

n  public 类一样, public 接口也必须定义在与接口同名的文件中。

n  接口中可以有数据成员,这些成员默认都是 public static final

n  一个接口可以继承自另一个接口。

n  Java 中不允许类的多继承,但允许接口的多继承。

n  Java 中,一个类可以实现多个接口。

n  一个类在继承另外一个类的同时,可以实现多个接口。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值