内部类

  1. 内部类: 一个类里面再定义一个类 , 里面的类叫做 内部类
    外面的类 外部类,宿主类

  2. 内部类 : 通常是为了帮助管理外部类事物的,则内部类可以访问外部类的属性和方法,即使外部类属性和方法是私有的

3.内部类的分类:
成员内部类: 相当于外部类的一个成员属性 或者成员方法
静态内部类
局部内部类
匿名内部类
4.使用场景: 这个内部类只可以帮助 这一个外部类实现外部类的需求
5.先要创建外部类对象 通过外部类对象 创建内部类对象

  1. 格式:外部类对象.new 内部类();
    main:
public class Test {

   public static void main(String[] args) {
       MemeberInner memeberInner = new MemeberInner();

       MemeberInner.Inner inner = memeberInner.new Inner();
       inner.eat();
       
       
       MemeberInner2 memeberInner2 = new MemeberInner2();
       Inner inner2 = memeberInner2.new  Inner();
       inner2.sleep();
       
   }
}
  1. 成员内部类,可以用四种访问权限修饰符修饰
  2. 成员内部类中 ,不允许直接用静态的属性和方法,但是属性可以 用 final static 修饰变成常量
  3. 内部类中可以使用外部类中的属性和方法 包括私有的

内部类1

package com.qf.demo9;

public class MemeberInner {

    private String name ="太和殿";
    private int age = 300;
    
    public void sleep(){
        System.out.println("一片寂静");
    }
    
    // 成员内部类
    // 可以用四种访问权限修饰符修饰
     class Inner{
        // 成员内部类中 不允许直接用静态的属性和方法
         // 但是属性可以 用 final static 修饰变成常量
        public final static     String sex = "不详";
        private double money;
        
        public  void eat(){
            // 内部类中可以使用外部类中的属性和方法  包括私有的
            System.out.println(age);
            sleep();
            System.out.println(name);
            System.out.println("吃");
        }
        
    }
    
    
}

1.外部类和内部类属性同名的时候 默认调用的是 内部类中的属性
1.想要调用外部类的对象 创建外部类对象 . 属性
内部类2

package com.qf.demo9;

public class MemeberInner2 {

    private  String name = "小花";
    private int age = 2;
    
    public void  open(){
        System.out.println("开花");
    }
    
    class Inner{
        // 外部类和内部类属性同名的时候   默认调用的是 内部类中的属性
        // 想要调用外部类的对象    创建外部类对象 . 属性
        private  String name = "小草";
        private int age = 5;
        
        public void sleep(){
            // this 指代的是内部类的对象
            
            MemeberInner2  memeberInner2 = new MemeberInner2();
            System.out.println(memeberInner2.name);
            
            System.out.println("冬眠");
        }
        
        
    }
    /**
     * 使用场景: 这个内部类只可以帮助  这一个外部类实现外部类的需求
     * 
     */
}

你可能感兴趣的:(内部类)