Day3 Java内部类学习笔记

<1>成员内部类

可以将一个类的定义放在另一个类的内部定义,这就是内部类。
1、成员内部类中不能存在static关键字,即,不能声明静态属性、静态方法、静态代码块等。
2、在成员内部类中访问外部类的成员方法和属性,要使用“外部类名.this.成员方法”和“外部类名.this.成员属性”的形式
3、创建成员内部类的实例使用“外部类名.内部类名 实例名 = 外部类实例名.new 内部类构造方法(参数)”的形式。在创建内部类实例之前需要先创建外部类的实例对象。
public class Namer {  
    private String name ;  
    private int age;  

    //get和set  

    class InnerClass{  
        public InnerClass(){  
            name = "chenssy";  
            age = 23;  
        }  
    }  
}  

我们应该在什么时候用到内部类呢?

在我们程序设计中有时候会存在一些使用接口很难解决的问题,这个时候我们可以利用内部类提供的、可以继承多个具体的或者抽象的类的能力来解决这些问题。可以这样说,接口只是解决了部分问题,而内部类使得多重继承的解决方案变得更加完整。

<2>局部内部类

定义在代码块、方法体内、作用域(使用花括号“{}”括起来的一段代码)内的类叫局部内部类。
1、局部内部类只能在代码代码块、方法体内和作用域中使用(创建对象和使用类对象).
class A{
    public A(){
    }
    public People getB(){
        class B extends People{ //局部内部类
        int age =0;
        }
        return new B();
    }
}

<3>匿名内部类

匿名内部类是唯一一种没有构造器的类,一般用于继承其他类或是实现接口,不需要增加额外的方法,只是对继承方法的实现或是重写
public class A{
   public BB{
    return B{
       System.out.println("我是匿名内部类的代码块");   
    };//分号表示表达式的结束;  
   }  
}  

<4>静态内部类

使用static修饰的成员内部类叫静态内部类。
1、静态内部类更外部类没有任何关系,只是在生成类名和类定义时有影响。静态内部类可以看做是与外部类平级的类。使用方式与外部类平级的类完全相同。
2、静态内部类不能访问外部类的非静态的属性和方法。外部类不能访问内部类的非静态的属性和方法。
3、静态内部类创建实例的形式:外部类名.内部类名 实例名 = new外部类名.内部类名(参数)
    class Outer {  
        static class Inner {  
            void go() {  
                System.out.println("内部类引用" + this);  
            }  
        }  
    }  

    public class Test {  
        public static void main(String[] args) {  
            Outer.Inner n = new Outer.Inner();  
            n.go();  
        }  
    }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值