java学习笔记27:包与内部类

1、包的作用

字节码.class分类存放

  • 1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
  • 2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
  • 3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。

语法:

package com.xiaoyu.web;
public class A {}
1.其实就是文件夹
2.包名一般按功能划分,com.heima.dd
3.按模块划分com.heima.teacher,这个叫点分路径

**注意:**package是程序中的第一条,一个java文件中只能有一个。

2、带包的java命令行执行
javac -d . com\xiaoyu\web\hello.java  //比如在在c盘创建一个文件夹,cd c:\test,在test中创建com\xiaoyu\web\hello.java,然后在c:\test下执行该命令,即对
java com.xiaoyu.web.hello
3、不同包下的类访问
import 包名.包名. ...包名.类名;(建议使用) //一般用具体导入,效率高
import 包名.包名. ... .*;(不建议使用)

package > import > class
package:只能有一个
import:可以有多个
class:可以有多个,以后建议是一个。(因为每一个类是一个独立的单元)

不导入包,使用包中的方法:

包名.包名. ...包名.类名 test = new 包名.包名. ...包名.类名();
4、默认导入的包

java.lang下的包使用不需要导入

5、内部类

所谓内部类就是在一个类内部进行其他类结构的嵌套操作。

5.1 在外部类外部 创建非静态内部类

语法: 外部类.内部类 内部类对象 = new 外部类().new 内部类();
举例: Outer.Inner in = new Outer().new Inner();

5.2 在外部类外部 创建静态内部类

语法: 外部类.内部类 内部类对象 = new 外部类.内部类();
举例: Outer.Inner in = new Outer.Inner();

5.3 在外部类内部 创建内部类语法

在外部类内部创建内部类,就像普通对象一样直接创建:Inner in = new Inner();

6、内部类分类

Java中内部类主要分为成员内部类、静态内部类、方法内部类、匿名内部类

6.1 成员内部类

类比成员方法

  • 成员内部类内部不允许存在任何static变量或方法 正如成员方法中不能有任何静态属性
  • 成员内部类是依附外部类的,只有创建了外部类才能创建内部类。
6.2 静态内部类

static修饰的内部类

非静态内部类在编译完成之后会隐含的保存着一个引用,该引用是指向创建它的外围类,但是静态类没有。没有这个引用就意味着:

  • 静态内部类的创建不需要依赖外部类可以直接创建。
  • 静态内部类不可以使用任何外部类的非static类(包括属性和方法),但可以存在自己的成员变量。
6.3 方法内部类

定义在方法里的内部类

  • 方法内部类不允许使用访问权限修饰符(public、private、protected)均不允许。
  • 方法内部类对外部完全隐藏,除了创建这个类的方法可以访问它以外,其他地方均不能访问 (换句话说其他方法或者类都不知道有这个类的存在)方法内部类对外部完全隐藏,出了创建这个类的方法可以访问它,其他地方均不能访问。
  • 方法内部类如果想要使用方法形参,该形参必须使用final声明(JDK8形参变为隐式final声明)
6.4 匿名内部类

匿名内部类就是一个没有名字的方法内部类,因此特点和方法与方法内部类完全一致,除此之外:

  • 匿名内部类必须继承一个抽象类或者实现一个接口。
  • 匿名内部类没有类名,因此没有构造方法。
7、内部类与外部类的关系
  • 对于非静态的内部类,内部类的创建依赖外部类的实例对象,在没有外部类实例之前是无法创建内部类的。
  • 内部类可以直接访问外部类的元素(包括私有域)—外部类在内部类之前创建,创建内部类时会将外部类的对象传入
  • 外部类可以通过内部类的引用间接访问内部类元素 – -要想访问内部类属性,必须先创建内部类对象
  • 内部类是一个相对独立的个体,与外部类没有关系。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值