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;
}
}