java基础复习(九)
java基础第九天
为什么要有包,将字节码文件进行分类存放
包其实就是文件夹
包的概述
1.按照功能去划分
2.按照模块分
定义包的格式:
package 包名;
多级包用.分开即可
定义包的注意事项
package 语句必须是程序的第一条可执行代码
package语句在一个java文件中只能有一个
如果没有package,默认表示无包名。
包名+类名
java com.heima.Demo1_Package 运行
带包的类 运行的时候也要带上包文件的名字 如上
javac -d . 源文件.java 编译生成目录 字节码文件编译到.当前文件夹下。
不同包下类之间的访问:
1.import 导入包 或者 带上包名字使用
2.权限为 public
封装:想给你看哪些,不想给你看哪些。封装是相对的。
导入的时候 import java.util. //代表通配符,他会到该包下挨个匹配,匹配上就导入。
在开发中都是用导入具体的类。
package import class 顺序关系
四种权限修饰符
private 默认的 protected public
私有仅仅是封装的一种体现形式
protected本类中可以访问,不同包下的子类可以访问。
不同包下的无关类,不能访问
面向对象 类及其组成所使用的常见修饰符(掌握)
1.修饰符
2.类
3.成员变量
4.构造方法
5.成员方法
除此以外的组合规则:
成员变量
成员方法
内部类
在类中定义类
内部类访问特点:
1内部类可以直接访问外部类的成员,包括私有。
2外部类要访问内部类的成员,必须创建对象。
外部类名.内部类名 对象名 = 外部类对象.内部类对象;;
Outer.Inner oi = new Outer().new Inner();
成员内部类私有使用
静态成员内部类
外部类名.内部类名 对象名 = 外部类名.内部类对象;
Outer.Inner oi =new Outer.Inner();
还有一种就是在外部类中访问内部类,然后提供一个public的方法。
成员内部类的面试题
Outer.this的使用
局部内部类
方法中定义类--开发中用的很少。
局部变量被弹栈走了 用final定义的常量在常量池
到jdk1.8不加也可以。
匿名内部类,没有名字的内部类,写在方法里。
必须与外面某个类或者某个接口形成关系
new Inter(){
重写里面的抽象方法;
};
相当于一个没有名字的子类
new Inner() {
public void print(){
System.out.println("print");
}
}.print();
匿名内部类只针对重写一个方法时候使用,不然太麻烦了。
匿名内部类是不能向下转型的,因为没有子类类名。
匿名内部类在开发中的应用:
匿名内部类面试题:
按照要求补齐代码
链式编程,调用方法之后还能继续调用方法。
证明调用方法之后返回是一个对象。
五天之后翻回来看
封装
继承
多态