程序包就是命名的类组。很像目录。是名称空间。类名在其中必须唯一
sgsware程序包-raytracing子程序包-Mailbox.java中的Mailbox.class
其全名为sgsware.raytracing.Mailbox
程序包名为小写。
1 2 3 4 5 6 7 8
| c:> javac -d /路径 文件名.java 编译程序包中的java文件 这时把编译出的*.class 放在这个路径下。 c:> java -classpath 路径 程序包名.文件 使用此文件。 package 名称;这样编译时就把这个文件的.class放在了这个名称中
|
1 2
| package mypackage; import mypackage.*;
|
一个类自动导入其程序包中的其他类。
在程序包中的类其default类型(包访问类型)为非public型
在同一程序包中的类在其他类中的实例可以调用自己类中的任何类型。
一个受保护的方法可以由属主类的任何子类中被超越。即使子类在其他的程序包中。
可以被子类的当前实例访问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package cc; public class Cctest { protected int id; protected void show() { System.out.println(id); } } package dd; import cc.Cctest; public class C extends Cctest { float salary; protected void show(C A) { System.out.println(A.id); System.out.println(A.salary); } }
|
一个受保护的数据可以被属主类的任何子类中调用。但不能被超类中的实例访问。
但可以被子类的实例访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| package dd; import cc.Cctest; public class C extends Cctest { float salary; protected void show(Cctest A) { System.out.println(A.id); } } ```
超类版本访問 | 子类版本访问 | -------|--------| public | public | protected | public protected | default |public protected default | private |public protected default private | 把main放在超类中。这样以后可以用超类的引用子类实例的超越的所有类型的函数。 终结类不能子类化,终结方法不能被超越。终结变量得到初始化后不能被修改。
```java
private void show() { System.out.println("a = " + a + " b = " + b + " c = " + c); } public void show() { System.out.println(add()); } PrivateClass pri1 = new SubPrivate(); pri1.show();
|
但如果超类中的show()是非private得则调用的是子类中的show().
接口如果是公用的则在任何地方的任何代码中都可以使用。
接口如果不是公用的则在它的程序包中使用。它不能是private/protected
接口中可以不声明public,但实现的时候必须有public声明.
接口的引用只能用接口中声明的方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| package Interface; interface OverrideB { void b(); void c(int s); } ~~~~~~~~~~~~~~~~~~~~ package Interface;
interface A { void b(); int c(int s); }
~~~~~~~~~~~~~ package Interface; public class Override implements OverrideB,A { public void b() { } public int c(int s){ return 3; } }
|
一个接口可以继承多个接口使用extends关键字
1 2 3 4
| interface AandB extends A,B { }
|
一个接口不能继承一个虚拟类
1 2 3 4 5 6 7 8 9 10
| public abstract class AbClass { abstract void draw(); } package Interface; interface AbInterface extends AbClass { }
|
虚拟类可以实现接口.