--------------内部类--------------------
public class first{
private int x;
private int z=20;
class second{
int z=50;
public void innermethod(){
x=10; //可以直接使用外部类的成员
System.out.println(first.this.z); //访问的是外部类的z ---20
}
}
public void test(){
Second sec=new Second();
}
}
*1、内部类可以直接使用外部类的成员,即使是private修饰也可以使用。
如果内部类与外部类有同名的成员,可以用: 外部类.this.成员名
2、内部类的对象的实例化:
A、在外部类的里面,new 内部类();
*B、在外部类的定义的外面,外部类对象.new 内部类();
---------------------静态内部类------------------------------
public class first{
private static int x;
//内部类
static class second{
public void innermethod(){
x=10; //可以直接使用外部类的static修饰的成员
}
}
*3、静态内部类可以直接使用外部类的static成员,即使是private修饰也可以使用。
3、静态内部类的对象的实例化:
A、在外部类的里面,new 内部类();
*B、在外部类的定义的外面,new 外部类.内部类();
-----------------本地方法内部类-------------------
public class MethodOuter {
private int x;
public void test(){
final int y=5;
//定义内部类
class inner{
public void innertest(){
x=10;
x=x+y;; //本方法内部类只能使用final修饰的局部变量
}
}//内部类的{结束
inner z = new inner();//只能在方法体中实例化
z.innertest();
} //test结束
}
4、本地方法内部类可以使用外部类的成员。
5、本地方法内部类可以使用类定义所在的方法中的局部变量,必须对变量用final修饰
6、本地方法内部类只能在类定义的方法体范围内实例化。
-------------匿名内部类-------------------
public class OuterNiming {
int x;
//下面代码定义了一个没有名字的类,实现ISPeak接口
ISpeak ispeak = new ISpeak(){
public void speak() {
System.out.println("aaaaaa");
x=10;
}
};
public void test(){
final int y=50;
ISpeak ispeak = new ISpeak(){
public void speak() {
System.out.println("bbbbb");
x=20;
x=x+y;
}
};
}
}
------------Object----------
Clone方法实现克隆
1、实现Cloneable接口
2、重写Clone方法,修改访问修饰符
3、调用clone方法得到一个“副本”
4、浅克隆
public class first{
private int x;
private int z=20;
class second{
int z=50;
public void innermethod(){
x=10; //可以直接使用外部类的成员
System.out.println(first.this.z); //访问的是外部类的z ---20
}
}
public void test(){
Second sec=new Second();
}
}
*1、内部类可以直接使用外部类的成员,即使是private修饰也可以使用。
如果内部类与外部类有同名的成员,可以用: 外部类.this.成员名
2、内部类的对象的实例化:
A、在外部类的里面,new 内部类();
*B、在外部类的定义的外面,外部类对象.new 内部类();
---------------------静态内部类------------------------------
public class first{
private static int x;
//内部类
static class second{
public void innermethod(){
x=10; //可以直接使用外部类的static修饰的成员
}
}
*3、静态内部类可以直接使用外部类的static成员,即使是private修饰也可以使用。
3、静态内部类的对象的实例化:
A、在外部类的里面,new 内部类();
*B、在外部类的定义的外面,new 外部类.内部类();
-----------------本地方法内部类-------------------
public class MethodOuter {
private int x;
public void test(){
final int y=5;
//定义内部类
class inner{
public void innertest(){
x=10;
x=x+y;; //本方法内部类只能使用final修饰的局部变量
}
}//内部类的{结束
inner z = new inner();//只能在方法体中实例化
z.innertest();
} //test结束
}
4、本地方法内部类可以使用外部类的成员。
5、本地方法内部类可以使用类定义所在的方法中的局部变量,必须对变量用final修饰
6、本地方法内部类只能在类定义的方法体范围内实例化。
-------------匿名内部类-------------------
public class OuterNiming {
int x;
//下面代码定义了一个没有名字的类,实现ISPeak接口
ISpeak ispeak = new ISpeak(){
public void speak() {
System.out.println("aaaaaa");
x=10;
}
};
public void test(){
final int y=50;
ISpeak ispeak = new ISpeak(){
public void speak() {
System.out.println("bbbbb");
x=20;
x=x+y;
}
};
}
}
------------Object----------
Clone方法实现克隆
1、实现Cloneable接口
2、重写Clone方法,修改访问修饰符
3、调用clone方法得到一个“副本”
4、浅克隆