Java 包和權限
6.1javac -d . Test.java //-d是根據Test.java生成文件夾、包.是代表當前路徑
//將類放置到一個包當中,需要使用package "包名"
//編譯時需要使用 -d參數,該參數的作用是依照包名生成相應的文件夾
//一個類的全名應該是“包名”+“.”+“類名”
//Jason.Test
//命名規劃:1.要求包名所有的字母都要小寫
//2.包名一般情況下,是你的域名倒過來寫
package org.jason.user;
class Test{
public static void main(String args[]){
System.out.println("Hello package");
}
}
6.2 包與訪問權限
Public主要在不同的包之中,如果需要訪問成員函數等等,需要定義public權限
package org.jason;
//如果一個類是public,那麼類名一定要與源文件名一致
//如果未加public,同時類在不同的包內,引用時則會報提示不是公共的
class Person{
public String name;
public int age;
public void introduce(){
System.out.println("name");
}
}
package org.feng;
class Test{
public static void main(String args[]){
org.jason.Person p=null;//不在同一個包內,需要寫全稱
}
}
Private權限只能在當前類中使用,目前只能爲變量與函數定義。
Default權限,同樣可以修飾類、變量、函數等,不需要寫修飾符,如果類在同一個包中,可以任意使用,調用,如果在不同的包中,需要使用public權限
Import導入
import org.jason.Person;
6.3 訪問權限與繼承
package org.jason;
//default 如果子類和父類不在同一個包當中,則子類可以繼承變量與函數,但是沒有權限訪問
//private 如果子類和父類不在同一個包當中,則子類無法繼承到父類當中的成員變量與成員函數
//protected權限首先擁有和default一樣的功能,但是該權限只能修飾成員變量與成員函數,
//除此之外,protected還允許跨包的繼承(子類與父類),而public允許各種包之間相互調用
//public>protected>default>private
//一個類或者變量的權限儘可能小
public class Person{
protected String name;
protected int age;
void eat(){
System.out.println("eat");
}
void sleep(){
System.out.println("sleep");
}
}
package org.feng;
import org.jason.Person;
class Student extends Person{
void introduce(){
System.out.println("my name is "+name+",my age is"+age);
}
7.java接口(重點)
定義了接口,就等於定義了調用對象的標準
實現是特殊的繼承。
interface USB{
void read();
void write();
}
interface WiFi{
void open();
void close();
}
class Phone implements USB,WiFi{
public void read(){
System.out.println("USBPhone read");
}
public void write(){
System.out.println("USBPhone write");
}
public void open(){
System.out.println("WIFi open");
}
public void close(){
System.out.println("Wifi close");
}
}
class Test{
public static void main(String args[]){
Phone phone=new Phone();
USB usb=usbPhone;
usb.read();
usb.write();
WiFi wifi=phone;
wifi.open();
wifi.close();
}
}
class PrinterFactory{
public static Printer getPrinter(int flag){
Printer printer=null;
if (flag==0){
printer=new HPPrinter();
}
else if (flag==1){
printer=new CanonPrinter();
}
return printer;
}
}