Java-包

包的作用和特点

  • 包可以有多层
  • 包的定义需要在第一行有效代码中(注释不算)
  • 不同包之间的文件名可以相同

不同包之间的互相访问

  • 只能访问不同包之间的类
  • 导入包名
    • 使用类的全名(包名.类名)
    • 导入的是包下的类
  • 关键字:import
    • 使用import将包中的某个或某些类导入,相当于在当前的包中创建了导入的类
  • 通配符:*
    • 表示导入该包下所有的

权限修饰符

  • public
    • 公共
    • 可以修饰类、方法和成员变量
    • public修饰的类可以被其所在的包下的其他类访问
      • 一个Java文件中只能有一个被public修饰的类,且类名要与文件名相同
  • protected
    • 受保护的
    • 可以修饰类和方法和成员变量
    • protected修饰的类不能被不同包中的类访问,但可以被不同包中的子类访问
  • default
    • 默认
    • 可以修饰类、方法和成员变量
    • 不写任何其他的权限修饰符时即为default修饰符
    • default修饰的类只能被同一个包中的其他内容访问
  • private
    • 私有
    • 可以修饰方法和成员变量
    • private修饰的成员只能被同一个类中的其他成员访问

权限修饰符总结

publicprotecteddefaultprivate
同一个类中
同一个包中的不同类
不同包中的子类
不同包中的类

内部类的概述

  • 内部类是类,同样是用来描述事物的
  • 内部类的分类
    • 成员内部类
    • 局部内部类
    • 匿名内部类
  • 内部类不能用普通方式访问,只能通过其外部来访问,而内部类可以自由的访问外部类的成员,无论是否是私有成员

成员内部类的概述和使用

  • 当事物中还有具体的事物时,就可以使用内部类来描述
  • 定义在类中方法外
  • 创建对象:
外部类名.内部类名 变量名 = new 外部类对象.new 内部类对象
Outer.Inner inner = new Outer().new Inner();        //此处的new Outer()可以看做是一个匿名对象

成员内部类的修饰符

  • 如果成员内部类使用static修饰,那么该内部类会随着外部类的加载而加载,因此创建对象的方式可以为:
外部类名.内部类名 变量名 = new 外部类名.内部类对象
Outer.Inner inner = new Outer.Inner();

局部内部类的概述和使用

  • 定义在方法内部的类
  • 只能在局部方法中创建这个对象,一旦该方法弹栈,外部就访问不到这个局部类了
    • (Jdk1.7)局部内部类访问局部变量必须使用final修饰
      • 调用方法时,局部变量如果没有用final修饰,那么当这个方法弹栈之后这个变量就会消失,此时内部类就无法再访问这个变量了,用final修饰后,变量的生命周期会等同于外部类的生命周期,即使方法弹栈,此变量也会依然存在,内部类才可以访问到。(Jdk1.8中已无需用final修饰)

局部内部类的生命周期应小于等于他所在的方法,当方法弹栈之后,内部类也应消失,即使在方法体中调用局部内部类的方法去访问局部变量,那么内部类的方法应该是在外部方法弹栈之前加载进入栈内存。也就是说,在内部类的方法弹栈之前,外部的方法是不会弹栈的,因此不用final修饰也是合理的。


匿名内部类的概述和格式

  • 类似于匿名对象,匿名内部类可以看作是一个没有名字的局部内部类
  • 定义在方法体中
  • 必须在定义匿名内部类的时候创建他的对象
  • 格式:
	new/接口(){
		(创建继承这个类的子类对象)可以对父类的方法重写
		(创建了实现接口的子类对象)必须对接口的方法进行实现
	};
  • 原理:创建了继承这个类或是实现这个接口的子类对象

匿名内部类的应用场景

  • 通常在使用方法是接口类型参数,并该接口中的方法不超过三个时,可以将匿名内部类作为参数传递。
  • 简化书写,如果阅读实在费劲的话,可以写有名字的内部类

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值