这道题一共要建三个目录:C:\myproj\bin、C:\myproj\lib和C:\myproj\classes,也可以自己建所要的目录,三个目录不同就可以了,具体要求如下:
n public的A.class和B.class属于包X.Y,该包存放在C:\myproj\classes中;public的C.class和D.class属于包S.T,把它们打包为E.jar文件中,并存放在C:\myproj\lib中;这些类均有四个方法:public void sayPublic()、private void sayPrivate()、protected void sayProtected()、void sayDefault(),而且都只包含一条语句System.out.println("Hi,"+getClass()+"."+函数权限(public|private|protected|default))。
n Test1.class、Test2.class和Test3.class为测试类(带入口函数),存放在目录C:\myproj\bin下。
n 打包命令:jar cvf K.jar * (注意把子目录S/T也一起打包进去)。
(吐槽下,做实验报告模板的老师或者TA这里对这道题的表述有些混乱 == 至少我是这样感觉的)
实验步骤:
(1) Test1分别创建A和C的一个对象并调用这四个方法,看看哪些方法可以使用,不能使用的就注释掉。
Test1运行截屏:
Test1的源码:
/*因为A.class和C.class不在Test1.java的所在目录中,所以需要引用包进来,
* 自动添加classpath在前之后,表示包位于
* H:\web\实验\java实验\lab3\code\classes\X\Y
* 或
* H:\web\实验\java实验\lab3\code\lib\S\T
* 下*/
import X.Y.*;
import S.T.*;
public class Test1{
public static void main(String[] args){
A a = new A();
a.sayPublic();
//a.sayPrivate();
//a.sayProtected();
//a.sayDefault();
C c = new C();
c.sayPublic();
//c.sayPrivate();
//c.sayProtected();
//c.sayDefault();
}
}
(2)Test2继承B并直接调用它的四个方法,看看哪些方法可以使用,不能使用的就注释掉。
* 在main()中要采用“Test2 test2=new Test2(); test2.s