1 Wrapper class
OverLoading 名相同,参数不同,返回类型不要求
1. //public void println(double d){}
//public void println(boolean b){}
public void println(Object o){}
2. int num=3;
double d=num;
Integer it=new Integer(3);
Double dd=it;
基本类型数据int可以向double自动扩展,但是包装类型之间
不能自动的相互转换
2 基本类型数据------》包装类型转换 手动人工 (1.5之前)
int i=3;
Integer it=new Integer(i);
(JDK1.5之后,自动转换)
int i=3;
Integer it=i; i=it;
1) Integer it3=null;
int i3=it3;
2) Integer it4=100;
Integer it5=100;
System.out.println(it4.equals(it5));----->true
System.out.println(it4==it5);-----> true
int <--------> Integer <--------> String
3 访问控制修饰符
private 本类 方法,属性
default 本包 类,方法,属性
protected 本包+子类 方法,属性
public 到处可见 类,方法,属性
4 内部类:定义在其他代码块(类体或者方法体)里的类称为内部类
编译后每一个内部类都会有自己的独立的字节码文件 ,
文件名Outer$Inner.class, 内部类也可以有父类和
实现接口,也可以是抽象的
根据位置和修饰符的不同分为四种:
1. member inner class 成员内部类
2. static inner class 静态内部类(嵌套内部类)
3. local inner class 局部内部类
4. annonymous inner class 匿名内部类
没有名字的类
static inner class
1. 定义的位置:类以内,方法之外,有静态修饰
(static 可以修饰内部类)
2. 本身能定义的属性和功能:所有的属性和功能,
包括静态和非静态的
3. 能直接访问什么:只能访问外部类的静态的属性和功能
4. 怎么创建对象: Outer.Inner in=new Outer.Inner();
member inner class
1. 定义的位置:类以内,方法之外,没有静态修饰
2. 本身能定义的属性和功能:只能定义非静态的属性和功能
3. 能直接访问什么:能访问外部类的所有的属性和功能
4. 怎么创建对象:
Outer.Inner in2=new Outer().new Inner();
在Outer里提供一个getInner(),返回内部类的对象
local inner class
1. 定义的位置:方法里面的类,前面不能用public or static修饰
2. 本身能定义的属性和功能:只能定义非静态的属性和功能
3. 能直接访问什么:能访问外部类的所有的属性和功能
以及方法的用final修饰的局部变量
4. 怎么创建对象:想当于局部变量,只能在方法里面创建对象
annonymous inner class
1. 是一个特殊的局部内部类,没有名字,没有构造方法,可以实现
一个接口或者继承一个类,生命周期里只能产生一个对象
2. 除了没有名字外,能定义的和能访问的都和普通的局部内部类
一致
3.当试图创建接口或者抽象类对象的时候,用匿名内部类
表示类体的{}紧跟在构造方法之后,调用匿名内部类的方法
只能用写类时创建的那个对象
作用:
1. 不破坏访问权限的情况下,可以使用外部类的私有成员变量
和方法
2. 将接口公开,把实现类作成内部类隐藏起来,要求使用
者使用接口,强制降低偶合度
3. Java 通过接口和内部类两种机制来实现多继承