23、24_抽象类
1.抽象类:
A.抽象类不能生成对象
B.如果一个类中包含有抽象函数,那么这个类必须被声明为抽象类
C.如果一个类中没有抽象函数,那么这个类也可以被声明为抽象类
2.其它:
抽象类可以有构造函数
抽象类可以防止子类复写的时候,忘记实现
abstract public class Print {
void open() {
System.out.println("open");
}
void close() {
System.out.println("close");
}
abstract void print();
}
public class HPPrint extends Print{
void print() {
System.out.println("HP");
}
}
public class JNPrint extends Print{
void print() {
System.out.println("JN");
}
}
public class Test_this {
public static void main(String[] args) {
Print p1 = new HPPrint();
p1.open();
p1.print();
p1.close();
Print p2 = new JNPrint();
p2.open();
p2.print();
p2.close();
}
}
25、26、27_包的访问权限
1.包:
将类放置到一个包中,需要用package(包名)
一个类的全名:“包名”+“.”+“类名”
2.包名命名规则(非硬性):
A.要求包名所有的字母都要小写
B.包名一般情况下,是域名段倒过来
3.访问权限
如果类名声明为public,则文件名必须和类名相同
protected权限和default类似,但该权限只能修饰成员变量、成员函数,可以跨包实现继承
import导入不同包内的类(*:导入该包内所有类)
28、29_接口:
1、interface:
A.接口中的方法都是抽象方法,并且都是public权限
B.一个类可以实现多个接口,一个接口可以继承多个接口
interface USB {
public void read();
public void write();
}
interface WiFi {
public void open();
public void close();
}
class Phone implements USB, WiFi {
public void read() {
System.out.println("USB read");
}
public void write() {
System.out.println("USB write");
}
public void open() {
System.out.println("WiFi open");
}
public void close() {
System.out.println("WiFi close");
}
}
public class Test_this {
public static void main(String[] args) {
Phone phone = new Phone();
USB usb = new Phone();
usb.read();
usb.write();
WiFi wifi = phone;
wifi.open();
wifi.close();
}
}
2.简单的静态工厂方法模式:
interface Print{
public void open();
public void close();
public void print(String str);
}
class JNPrint implements Print{
void clean() {
System.out.println("clean");
}
public void open() {
System.out.println("JN open");
}
public void close() {
this.clean();
System.out.println("JN close");
}
public void print(String str) {
System.out.println("LN_Str:" + str);
}
}
class PrintFactory {
public static Print getPrinter(int flag) {
Print print = null;
if (flag == 0) {
print = new HPPrint();
} else if (flag == 1) {
print = new JNPrint();
}
return print;
}
}
public class Test_this {
public static void main(String[] args) {
int flag = 1;
Print printer = PrintFactory.getPrinter(flag);
printer.open();
printer.print("Hello");
printer.close();
}
}