1、包,就是文件夹
a:包的作用,区分同名的类。对类进行分类管理。
b:包的定义,package 包名。多级包用.分开。
c:package语句必须在文件中第一条有效语句,如果没有package默认为无包名。
2、导包
a:我们多次使用一个带包的类,很麻烦,这个时候需要我们导包。
b:格式,import 包名.类名。
c:packa,import,class的顺序:packa>import>class。
3、权限修饰符
a:private,只能在本类中使用
b:默认,能在本类中使用,还能在同一个包下使用
c:protected,能在本类中使用,能在同一个包下使用,还能在不同包下的子类中使用
d:public,能在本类中使用,能在同一个包下使用,能在不同包下的子类中使用,还能在不同包下的无关类中使用
e:这四种权限修饰符,在任意时刻只能出现一种。
4、常见修饰符
a:权限修饰符,private,默认,protected,public
b:状态修饰符,static,final
c:抽象修饰符,abstract
5、内部类
a:把类定义在另一个类的内部,该类就被称为内部类,举例,把类B定义在类A中,类B就是内部类。
b:内部类可以直接访问外部类成员,包括私有。外部类要想访问内部类成员,必须创建对象。
c:内部类包括成员内部类和局部内部类。
d:成员内部类,private为了数据的安全性,static为了访问的方便性。
成员内部类不是静态的:外部类名.内部类名 对象名 = new 外部类名().new 内部类名()。
成员变量是静态的:外部类名.内部类名 对象名 = new 外部类名.内部类名()。
举例:
class Outer{
private int num = 10;
class Inner{
public void show() {
System.out.println(num);
}
}
public void method() {
Inner i = new Inner();
i.show();
}
}
public class InnerClassDemo {
public static void main(String[] args) {
Outer o = new Outer();
o.method();
Outer.Inner oi = new Outer().new Inner();
oi.show();
}
}
6、局部内部类,局部内部类访问局部变量必须加final修饰,因为局部变量使用完毕就消失。
7、匿名内部类(重要)
a:是局部内部类的简化形式
b:匿名内部类的前提,存在一个类或者接口
c:格式:
new 类名或者接口名(){
重写方法;
}
d:本质,其实是继承该类或者实现接口的子类匿名对象
8、匿名内部类在开发中的使用
我们在开发的时候,会看到抽象类,或者接口作为参数。而这个时候我们知道实际需要的是一个子类对象。如果该方法仅仅调用一次,我们就可以使用匿名内部类的格式简化。
举例:
interface Person{
public abstract void study();
}
class PersonDemo{
public void method(Person p) {
p.study();
}
}
public class PersonTest {
public static void main(String[] args) {
PersonDemo pd = new PersonDemo();
pd.method(new Person() {
public void study() {
System.out.println("好好学习");
}
});
}
}