<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">距离上次上课已经有差不多一个月了,这次课又来了几位新同学,看来要利用暑假好好学习了。</span>
在这次课上一共讲了四个方面的内容:接口、内部类、枚举类以及gc(垃圾回收机制)。
一、接口
定义接口使用关键字interface,使用接口使用关键字implements,在枚举类里面,所有变量和方法都默认以及只能定义为public、abstract,变量还只能定义为final。接口与抽象类的关系可以看做是完全抽象与部分抽象的关系,即前者里面只有抽象方法和变量,后者则允许有非抽象方法和变量。此外,java可以使用多接口。
例:
interface InterfaceA{
int property_A=5;
void testA();
}
interface InterfaceB{
int property_B=6;
void testB();
}
interface InterfaceC extends InterfaceA,InterfaceB{
int property_C=7;
void testC();
}
二、内部类
内部类即在里面定义一个类。内部类里面又有几种特殊情况,即静态内部类、方法内部类以及匿名内部类。静态内部类只能访问类外静态变量,方法内部类只能在方法里面使用,匿名内部类用于类只是用一次的情况。当内部类里面有与类外面有相同的变量时,里面的变量在内部类内会覆盖类外变量。
例:
public class Person {
//静态内部类
static int age=27;
static class InClass{
void printInfo(){
System.out.println(age);
}
}
int height=179;
//定义方法内部类
class Heart{}
public static void main(String[] args){
Heart heart=new Person().new Heart();
//匿名内部类
new Thread(new Runnable(){
public void run(){}
}).start();
}
}
三、枚举类
使用枚举类需要使用关键字enum。enum关键字与class、abstract、interface同级,而且枚举类并不是继承于object类,而是继承于java.lang.Enum,可以使用serializable和comparable接口。
例:
enum SeasonEnum{
SPRING,SUMMER,FALL,WINNER;
}
四、gc
对象在jvm有三种状态:可达状态、可恢复状态、不可达状态。垃圾回收机制的几个特点:
1、只回收对象,不回收物理资源。
2、回收对象之前都会调用finalize方法,看看对象是否会恢复到可达状态。
3、无法精确控制回收时间。
除了自动的垃圾回收之外,还可以进行强制垃圾回收,可以调用System.gc或Runtime.getRuntime().gc()。
作业:
package homework4;
public interface IDataBase {
void connect();
void query();
void dispose();
}
创建一个接口IDatabase,作为所有数据库操作的模板
import java.util.Scanner;
public class DataBaseSelection {
Scanner sc=new Scanner(System.in);
String database=sc.next();
IDataBase DB=null;
public void getDatabase(){
switch(database){
case "Mysql":
DB=new DataBaseMysql();
break;
case "SqlSever":
DB=new DataBaseSqlServer();
break;
case "Oracle":
DB=new DataBaseOracle();
break;
default:
break;
}
}
}
该类用于选择使用哪个数据库。
public class DataBaseMysql implements IDataBase{
public void connect(){};
public void query(){};
public void dispose(){};
}
public class DataBaseSqlServer implements IDataBase{
<span style="white-space:pre"> </span>public void connect(){};
<span style="white-space:pre"> </span>public void query(){};
<span style="white-space:pre"> </span>public void dispose(){};
}
public class DataBaseOracle implements IDataBase{
<span style="white-space:pre"> </span>public void connect(){};
<span style="white-space:pre"> </span>public void query(){};
<span style="white-space:pre"> </span>public void dispose(){};
}
数据库的具体实现。