包:管理众多的类,使用package语句,包应该对应着文件系统的目录结构,在package语句中用.来表示目录的层次结构,package语句必须是第一条语句
package cn.pk
class test
{
public static void main(String[] args)
{}
}
javac -d . test.java 在当前目录下生成包, javac -d e:\java\code\ test.java 在指定目录下生成包
java cn.pk.test
import java.io.file 引入/javaio/file类
java中的lang包会自动引入, 同一个包中的类可以直接引用,无需import导入
import java.io.File
class test
{
public static void main(String[] args)
{
File f;
}
}
类的修饰符:public default(缺省的)只能在同一个包中访问
final 最终的类,不能派生子类 abstract 抽象类
方法的修饰符:
public | protected | default | private | |
同 类 | √ | √ | √ | √ |
同 包 | √ | √ | √ | |
子 类 | √ | √ | ||
通 用 | √ |
abstract方法:抽象方法,没有方法体。含有抽象方法的类就必须是抽象类,抽象类不能实例化一个对象。
如果一个子类没有实现父类的抽象方法,那么子类就必须是抽象方法
java垃圾回收:
class Garbage
{
int index;
static int count;
Garbage()
{
count ++;
System.out.println("object " + count + " construct");
setID(count);
}
void setID(int id)
{
index = id;
}
protected void finalize() //垃圾回收器,低优先级,靠gc()函数调用
{
System.out.println("object " + index );
}
public static void main(String[] args)
{
new Garbage();
new Garbage();
new Garbage();
new Garbage();
System.gc(); //运行垃圾回收器
}
}
接口:模块之间交互,一个类要实现接口中所有的方法,这样才可以实例化。接口中所有的方法都是public abstract,接口允许多继承,这点和类不一样
interface Sport
{
void run();
void jump();
}
class Athlete implements Sport
{
public void run()
{
System.out.println("短跑");
}
public void jump()
{
System.out.println("三级跳");
}
public static void main(String[] args)
{
Athlete zh = new Athlete();
zh.run();
zh.jump();
}
}
一个电脑接口的实例
/***************************显卡接口*********************************/
interface VideoCard
{
void display();
String getName();
} //显卡接口
/****************显卡类***********************************?
class Dmeng implements VideoCard
{
String name;
public Dmeng()
{
name = "Dmeng card!";
}
public void setName(String name)
{
this.name = name;
}
public void display()
{
System.out.println("Dmeg is working!");
}
public String getName()
{
return name;
}
}
/**********************主板类******************************/
class MainBoard
{
VideoCard vc;
void setVideoCard(VideoCard vc)
{
this.vc = vc;
}
void run()
{
System.out.println(vc.getName());
vc.display();
}
}
/*************************电脑类***************************/
class Computer
{
public static void main(String[] args)
{
Dmeng d = new Dmeng();
MainBoard b = new MainBoard();
b.setVideoCard(d);
b.run();
}
}