Java新手:包、内部类的知识总结

java中的包就相当于我们电脑系统中的文件夹,包里存放的是类文件,包名通常是全部小写字母,多层包之间用“.”连接。

  1. 包的特点:
    包可以有多层结构
    不同包下的文件名可以相同
    包的声明必须写在程序有效代码的第一行
  2. 不同包之间的相互访问:
    可以使用类的全名(包名.类名)
    可以使用关键字import将类导入
    *表示的是通配符,代表导入的这个包下所有的类,并没有导入子包下的类。
权限修饰符
publicprotecteddefaultprivate
同一个类中YYYY
同一个包中(子类与无关类)YYY
不同包的子类YY
不同包中的无关类Y

1、private修饰仅能在本类中访问,
2、在本包中的类都可以访问除了private修饰都可以,
3、想在本包中的类和其他包的子类都可以访问,可以使用protected的修饰,
4、所有的包中所有的类都可以访问使用public修饰。
如果类用public修饰,则类名必须与文件名相同,一个文件中只能有一个public修饰的类。

修饰符成员变量成员方法构造方法
publicYYYY
defaultYYYY
protectedYYY
privateYYY
abstractYY
staticYY
finalYYY

static修饰的成员可以直接被类名调用。
final修饰的类不能被继承,修饰的方法不能被重写,修饰的变量是常量。
private修饰的类不能被别的类使用。
protected用来修饰成员的,为子类提供。

内部类

内部类就是将类写在其他类的内部,在编译时也会有自己的class文件。

  1. 成员内部类:
    定义在外部类中的成员位置,与类中成员变量相似。
    成员内部类可以使用的修饰符有:public、private、protected、final、static、abstract,但是使用private,无法在其他类中访问,使用static修饰不用再创建外部类的对象了(Outer.Inter.speak()?,
public class InterDemo {
	public static void main(String[] args) {
	//第一种访问方式
		Outer.Inter i2 =new Outer().new Inter();
		i2.speak();
		//Outer.Inter.speak()
		//第二种访问方式
		Outer o =new Outer();
		o.method();
	}
}
class Outer{
	private int a=10;
	public void method(){
		Inter i = new Inter();
		i.speak();
	}
	//内部类
	//	static class Inter{
	//	public static void speak(){
	class Inter{
		public void speak(){
			System.out.println("a="+a);//在内部类中,可以直接访问外部类饿成员,包括私有成员
		}
	}
}

输出结果:

a=10
a=10
  1. 局部内部类:
    定义在外部类方法中的,和局部变量相似,出了方法就不能使用
public class InterDemo {
	public static void main(String[] args) {
		Outer o =new Outer();
		o.method();
	}
}
class Outer{
	private  int a=10;
	public void method(){
//		Inter i = new Inter();在内部类声明之后才能创建对象
		class Inter{
			public void speak(){
				System.out.println("a="+a);
			}
		}
		
		Inter i = new Inter();
		i.speak();
	}
}
  1. 匿名内部类:
    是用来创建某个类型子类对象的快捷方式。定义在方法中,必须在定义匿名内部类的时候创建他的对象。
    它是创建了继承这个类的子类对象或是创建了实现这个接口的子类对象。
public class InterDemo {
	public static void main(String[] args) {
		Outer o =new Outer();
		o.method();
	}
}
interface Inter{
	public void function();
}
class Outer{
	public void method(){
		Inter i =new Inter(){
		//如果创建了继承这个类的子类对象,可以重写父类的方法,
		//如果是创建了实现了这个接口的子类对象,必须要实现该接口的所有方法。
			@Override
			public void function() {
				System.out.println("function");
			}
		};
		i.function();
	}
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值