package包其实就是文件夹
多级包用.分开
实际应用多用多级包
把class文件存放在包中
格式:package 包名
把class文件从包中导出
格式:import 包名.类名
package语句必须是程序的第一条可执行语句
一个java文件只能有一个package语句
如果没有package,默认无包名
带包java文件编译命令
javac -d . java文件名.java
编译后会自动生成在指定包名路径下的class文件
带包java文件运行命令
java com.heima.java文件名
不同包之间的类访问的注意事项:
1.类的定义要为:public class 类名
2.当没有用import导入包时,主函数中使用不同包的类要在前面加上包名路径,如com.baidu.Person p=new com.baidu.Person();
用 “import 包名.类名” 来使用不同包的类
使用import尽量导入具体的包,这样效率会快点
当一个类中所有的方法都是静态的,就会把构造方法私有化
内部类格式:
class outer{
class inner{
}
}
内部类可以直接访问外部类的成员,包括私有
外部类要访问内部类成员,必须创建对象
外部类名.内部类名 对象名=new 外部类构造方法.new 内部类构造方法;
内部类被私有化后
class outer{
private class inner{
}
}
可以在外部类中创建一个公共方法来调用内部类
outer o=new outer();
class outer{
private class inner{
}
public void function(){
inner i=new inner();
//用内部类对象i调用即可
}
}
内部类被静态化后
class outer{
static class inner{
}
}
调用静态内部类中的方法的格式为:outer.inner o=new outer.inner();
java面试题
public class haha {
public static void main(String[] args){
outer.inner o=new outer().new inner();
o.method();
}
}
class outer{
public int num=10;
class inner{
int num=20;
public void method(){
int num=30;
System.out.println(num);
System.out.println(this.num);
System.out.println(outer.this.num);
}
}
}
调用内部类的另一种方式:
class outer{
class inner{
public void function(){}
}
public void method(){
new inner().function();
}
}
用匿名类来调用抽象类中的方法
public class haha {
public static void main(String[] args){
PersonDemo pp=new PersonDemo();
pp.method(new Person(){
public void show(){
System.out.println("show");
}
});
}
}
abstract class Person{
public abstract void show();
}
class PersonDemo{
public void method(Person p){
p.show();
}
}
接口不一定要用类来实现才能使用