1.内部类:
内部类就是在一个类的内部在定义一个类
代码:
public class Outer {
private String s="hello world";
class Inner{
public void info(){
System.out.println(s);
}
}
public void fun(){
new Inner().info();
}
public static void main(String[] args) {
new Outer().fun();
}
}
这样做的好处是:可以让内部类直接访问外部类的私有属性
其实内部类也可以变为“外部类”
看代码
public class Outer {
private static String s="hello world";
static class Inner{
public void info(){
System.out.println(s);
}
}
public void fun(){
new Inner().info();
}
public static void main(String[] args) {
new Outer.Inner().info();
}
}
把内部类声明为静态类,这样内部类就变为“外部类”
public class Outer {
private static String s="hello world";
static class Inner{
public void info(){
System.out.println(s);
}
}
public void fun(){
new Inner().info();
}
public static void main(String[] args) {
new Outer.Inner().info();
new Inner().info();//输出结果是一样的,因为现在内部类已经变为外部类了。
}
}
结果是一样
外部类也可以实例化来调用内部类的方法
class Outer {
private String s="hello world";
class Inner{
public void info(){
System.out.println(s);
}
}
};
public class InnerTest {
public static void main(String[] args) {
Outer outer=new Outer();//实例化外部对象
Outer.Inner in=outer.new Inner();//实例化内部对象
in.info();//调用内部类的方法
}
}
在方法中也可以来声明内部类
class O{
//方法中内部类想要访问方法的参数,则方法的参数必须是final
public void fun(final int temp){
class Inner{//在方法中定义内部类
public void info(){
System.out.println("hello world"+temp);
}
}
new Inner().info();
}
}
public class InnerTest1 {
public static void main(String[] args) {
new O().fun(30);
}
}
内部类就是在一个类的内部在定义一个类
代码:
public class Outer {
private String s="hello world";
class Inner{
public void info(){
System.out.println(s);
}
}
public void fun(){
new Inner().info();
}
public static void main(String[] args) {
new Outer().fun();
}
}
这样做的好处是:可以让内部类直接访问外部类的私有属性
其实内部类也可以变为“外部类”
看代码
public class Outer {
private static String s="hello world";
static class Inner{
public void info(){
System.out.println(s);
}
}
public void fun(){
new Inner().info();
}
public static void main(String[] args) {
new Outer.Inner().info();
}
}
把内部类声明为静态类,这样内部类就变为“外部类”
public class Outer {
private static String s="hello world";
static class Inner{
public void info(){
System.out.println(s);
}
}
public void fun(){
new Inner().info();
}
public static void main(String[] args) {
new Outer.Inner().info();
new Inner().info();//输出结果是一样的,因为现在内部类已经变为外部类了。
}
}
结果是一样
外部类也可以实例化来调用内部类的方法
class Outer {
private String s="hello world";
class Inner{
public void info(){
System.out.println(s);
}
}
};
public class InnerTest {
public static void main(String[] args) {
Outer outer=new Outer();//实例化外部对象
Outer.Inner in=outer.new Inner();//实例化内部对象
in.info();//调用内部类的方法
}
}
在方法中也可以来声明内部类
class O{
//方法中内部类想要访问方法的参数,则方法的参数必须是final
public void fun(final int temp){
class Inner{//在方法中定义内部类
public void info(){
System.out.println("hello world"+temp);
}
}
new Inner().info();
}
}
public class InnerTest1 {
public static void main(String[] args) {
new O().fun(30);
}
}