内部类

内部类

  1. 把一个类放在另一个类的内部定义,这个定义在其他类的内部的类就被称
    为内部类,包含内部类的类被称为外部类。

  2. 内部类作用
    1> 提供更好的封装
    2> 可以直接访问外部类的私有数据
    3> 匿名内部类适合用于创建仅需要一次使用的类
    4>内部类定义在其他类的两点区别:

         内部类比外部类可以多使用三个修饰符:private ,protectod ,static —— 外部类不能使用这三个修饰符。
         非静态内部类不能拥有静态内部类   
    

    public class OuterClass{
    //此处可以定义内部类
    }

成员内部类

定义成员内部类语法格式:

   public  class Person{
     //成员内部类,可以使用类的修饰符
     public final class work1(){
        }
     protected class work2(){
        }
     class work3(){
        }
     private abstract class work4(){
         } 
     }   

静态内部类

  1. 用 static 修饰的内部类称为静态内部类。
    语法格式:

     public class Person{
     //静态内部类
       public final static class work{
           }
       public abstract static class work2{
           }
       }
    
  2. 静态内部类是外部类的一个静态成员,因此外部类的所有方法,所有初始化块中的可以使用静态内部类来定义变量,创建对象。

  3. 接口内部类只能是静态内部类。

局部内部类

  1. 把内部类放在方法里定义,这个内部类就是局部内部类,局部内部类仅在该方法中有效

     public  class Loac{
          public static void main(String[] args){
            //定义局部内部类
            class Inner{
            int a;
            }
            //定义局部内部类子类
            class Innerser extends Inner{
            int b;
            }
            //创建局部内部类对象
            Innerser in = new Innerser();
            in.a = 5;
            in.b = 6;
            System.out.printIn(in.a+in.b);
            }
     }       
    

匿名内部类

  1. 定义匿名内部类格式

    new 实现接口()  |  父类构造器(实参列表)
    {
    //匿名内部类的类体部分
    }
    
  2. 两条规则
    1> 匿名内部类不能是抽象类,在创建匿名内部类时,会立即创建匿名内部类的对象
    2> 匿名内部类不能定义构造器,但匿名内部类可以定义初始化块,通过实例初始化块完成构造器需要完成的事情。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值