面向对象:
包:
相当于文件夹,包没有父子级关系。
包的作用:
1.不同的包存储不同.java文件 增加了可读性以及后期的维护性
2.java中是以类为单位的,区分类,包名.类名
3.包的作用用来区分类
导包:
1:java.lang包下的所有类都可以直接使用 不需要导包
2:如果需要导包: import 所需类的全限定名
3:在类声明之前 声明包之后
4:import java.util.*;
5:import 导包 同名类只能通过import导入一次
6:如何导入同名类:
a:import导入
b:创建对象时 使用全限定名 java.sql.Date sqlD = new java.sql.Date(123456L);
7:jdk1.7之后 可以使用静态导入
a:import static java.lang.Math.PI; 导入指定的属性
b:import static java.lang.Math.*;导入所有静态内容
代码1分析:
内部类:
1.定义在类里面的类称之为内部类
2.生成的字节码文件的文件名称 内部类-> 外部类$内部类
普通内部类:
1:外部类中如何使用内部类的属性以及方法:
(1)在外部类中创建内部类对象 调用内部类功能、属性
2:内部类中使用外部类的属性以及方法:
(2)可以直接使用
3:其它类中调用内部类中的属性和方法:
(1)导包 包名.外部类.内部类
内部类类型 变量名= new 外部类对象().new 内部类对象
Inner01 in = new Outer01().new Inner01();
(2)外部类.内部类 变量名= new 外部类对象().new 内部类对象
Outer01.Inner01 in = new Outer01().new Inner01();
代码2分析:
静态内部类:
通过static修饰的内部类称之为静态内部类
1:外部类中如何使用静态内部类的属性以及方法:
(1)创建对象,调用对象的属性以及方法
2:静态内部类中使用外部类的属性以及方法:
(2)创建外部类的对象 调用对象的属性以及方法
3:其它类中调用内部类中的属性和方法:
(1)导包 包名.外部类.内部类
内部类类型 变量名= new 外部类. 内部类对象()
Inner01 in = new Outer02.Inner01();
(2)外部类.内部类 变量名= new 外部类. 内部类对象()
Outer01.Inner01 in =new Outer02.Inner01();
4:注意:
Inner01 inner = new Outer02().new Inner01();这种写法不允许。
代码3分析:
例题1分析:
编写静态内部类完成单例模式创建,分析能否做到延迟加载。
public class Single {
static class SingleHolder{
private static Single single = new Single();
}
private Single() {
}
public static Single getInstance() {
return SingleHolder.single;
}
public static void add() {
}
public static void main(String[] args) {
Single s1 = getInstance();
System.out.println(s1);
}
}
分析图示:
{
}
public static void main(String[] args) {
Single s1 = getInstance();
System.out.println(s1);
}
}
``