zoukankan      html  css  js  c++  java
  • Java实现Package编译和访问

    Java实现Package编译和访问

    说明

    1. 所有文件都是使用UTF-8编码来写的,请不要用Windows记事本随便打开
    2. Test.java文件中注释的方法说明了该类是不能访问其方法的

    文件目录树

    • bin
      • Test1.class
      • Test2.class
      • Test3.class
    • classes
      • X
        • Y
          • A.class
          • B.class
    • lib
      • E.jar
        • S
          • T
            • C.class
            • D.class
    • src
      • A.java
      • B.java
      • C.java
      • D.java
      • Test1.java
      • Test2.java
      • Test3.java
    • Makefile

    代码一览

    /* A.java */
    package X.Y;
    
    import java.util.*;
    
    public class A {
    
    	public void sayPublic() {
    		System.out.println("Hi, " + this.getClass() + ". (public)");
    	}
    
    	private void sayPrivate() {
    		System.out.println("Hi, " + this.getClass() + ". (private)");
    	}
    
    	protected void sayProtected() {
    		System.out.println("Hi, " + this.getClass() + ". (protected)");
    	}
    
    	void sayDefault() {
    		System.out.println("Hi, " + this.getClass() + ". (default)");
    	}
    }
    
    /* B.java */
    package X.Y;
    
    import java.util.*;
    
    public class B {
    
    	public void sayPublic() {
    		System.out.println("Hi, " + this.getClass() + ". (public)");
    	}
    
    	private void sayPrivate() {
    		System.out.println("Hi, " + this.getClass() + ". (private)");
    	}
    
    	protected void sayProtected() {
    		System.out.println("Hi, " + this.getClass() + ". (protected)");
    	}
    
    	void sayDefault() {
    		System.out.println("Hi, " + this.getClass() + ". (default)");
    	}
    }
    
    /* C.java */
    package S.T;
    
    import java.util.*;
    
    public class C {
    
    	public void sayPublic() {
    		System.out.println("Hi, " + this.getClass() + ". (public)");
    	}
    
    	private void sayPrivate() {
    		System.out.println("Hi, " + this.getClass() + ". (private)");
    	}
    
    	protected void sayProtected() {
    		System.out.println("Hi, " + this.getClass() + ". (protected)");
    	}
    
    	void sayDefault() {
    		System.out.println("Hi, " + this.getClass() + ". (default)");
    	}
    }
    
    /* D.java */
    package S.T;
    
    import java.util.*;
    
    public class D {
    
    	public void sayPublic() {
    		System.out.println("Hi, " + this.getClass() + ". (public)");
    	}
    
    	private void sayPrivate() {
    		System.out.println("Hi, " + this.getClass() + ". (private)");
    	}
    
    	protected void sayProtected() {
    		System.out.println("Hi, " + this.getClass() + ". (protected)");
    	}
    
    	void sayDefault() {
    		System.out.println("Hi, " + this.getClass() + ". (default)");
    	}
    }
    
    /* Test1.java */
    import java.util.*;
    import X.Y.*;
    import S.T.*;
    
    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();
    	}
    }
    
    /* Test2.java */
    import java.util.*;
    import X.Y.*;
    import S.T.*;
    
    class Test2 extends B {
    	public static void main(String[] args) {
    		Test2 test2 = new Test2();
    		test2.sayPublic();
    		//test2.sayPrivate();
    		test2.sayProtected();
    		//test2.sayDefault();
    	}
    }
    
    /* Test3.java */
    import java.util.*;
    import X.Y.*;
    import S.T.*;
    
    class Test3 extends D {
    	public static void main(String[] args) {
    		Test3 test3 = new Test3();
    		test3.sayPublic();
    		//test3.sayPrivate();
    		test3.sayProtected();
    		//test3.sayDefault();
    	}
    }
    
    /* Makefile */
    target:
    	javac -encoding utf-8 ./src/A.java -d ./classes
    	javac -encoding utf-8 ./src/B.java -d ./classes
    	javac -encoding utf-8 ./src/C.java -d .
    	javac -encoding utf-8 ./src/D.java -d .
    	jar cvf ./lib/E.jar ./S/*
    	rm -rf ./S
    	javac -encoding utf-8 -classpath "./lib/E.jar;./classes;" ./src/Test1.java -d ./bin
    	javac -encoding utf-8 -classpath "./lib/E.jar;./classes;" ./src/Test2.java -d ./bin
    	javac -encoding utf-8 -classpath "./lib/E.jar;./classes;" ./src/Test3.java -d ./bin
    
    run-Test1:
    	java -classpath "./bin;./lib/E.jar;./classes;" Test1
    
    run-Test2:
    	java -classpath "./bin;./lib/E.jar;./classes;" Test2
    
    run-Test3:
    	java -classpath "./bin;./lib/E.jar;./classes;" Test3
    
    clean:
    	rm -rf ./bin/*.class
    	rm -rf ./classes/*
    	rm -rf ./lib/*.jar
    

    样例代码

    传送门:下载

  • 相关阅读:
    洛谷 AT2000 Leftmost Ball
    洛谷 P1326 足球
    洛谷 P4868 Preprefix sum
    洛谷 P2596 [ZJOI2006]书架
    HDU 3415 Max Sum of Max-K-sub-sequence
    洛谷 P3901 数列找不同
    洛谷 P3609 [USACO17JAN]Hoof, Paper, Scissor蹄子剪刀…
    洛谷 P5749 [IOI2019]排列鞋子
    验证码解决表单重复的原理
    session和浏览器之间的技术内幕
  • 原文地址:https://www.cnblogs.com/wsine/p/5183431.html
Copyright © 2011-2022 走看看