Java中包、导包、修饰符和内部类

111 阅读2分钟

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("好好学习");
			}
		});
	}
}