2017.12.13T19_B2_6.4内部类

Posted 晓……晓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017.12.13T19_B2_6.4内部类相关的知识,希望对你有一定的参考价值。

package com.xdf.demo;

/**
 * 匿名内部类
 */
public interface Animal {

 /**
  * 所有动物吃饭的方法
  */
 void eat();
}***************************************

package com.xdf.demo;

/**
 *  外部类 必须是 public 修饰,不能更改 访问权限修饰符
 *  内部类可以设置 访问权限修饰符
 * 
 *  如果我们把Son单独提取成一个类
 *  这样任何地方都可以访问Son!
 *  现在把Son变成了内部类!
 *  别人必须想访问Father,才能拿到Son
 * 
 */
public class Father { // 外部类
 /**
  * 外部类的成员变量
  */
 private static int age = 50;
 private String name = "小白";

 /**
  * 定义成员内部类
  */
 class Son { // begin Son
  int age = 100;
  String name = "小黑";

  /**
   * 内部类的方法
   */
  public void sayHello() {
   System.out.println("Son   成员内部类 打招呼的方法!");
   System.out.println("内部类age==>" + age);
   System.out.println("内部类name==>" + name);
   System.out.println("======获取外部类的属性=======");
   System.out.println("外部类age==>" + Father.this.age);
   System.out.println("外部类name==>" + Father.this.name);
  }
 } // end Son

 /**
  * 外部类的方法
  */
 public void getSon() {
  class Son { // 局部内部类 仅限于 getSon()方法
   public void sayHello() {
    System.out.println("Son  局部内部类 打招呼的方法!");
   }
  }
  Son son = new Son();
  son.sayHello();
 }

 /**
  * 静态内部类
  */
 static class Son2 {
  public void sayHello() {
   System.out.println("Son2  静态内部类 打招呼的方法!" + age);

**********************************************************

package com.xdf.demo;

import com.xdf.demo.Father.Son;
import com.xdf.demo.Father.Son2;

public class InnerClassDemo {

 public static void main(String[] args) {
  /**
   * 使用成员内部类
   * 01.实例化外部类对象
   * 02.通过外部类对象创建内部类对象
   * 03.调用内部类的属性和方法
   */
  Father father = new Father();
  Son son = father.new Son();
  son.sayHello();

  // 访问局部内部类
  father.getSon();

  // 访问静态内部类
  Son2 son2 = new Son2();
  son2.sayHello();

  // 访问匿名内部类
  Demo demo = new InnerClassDemo().new Demo();
  demo.animalEat("大大的");

 }

 class Demo { // 成员内部类

  public void animalEat(final String name) {
   // 实例化一个动物 匿名内部类
   Animal dog = new Animal() {
    @Override
    public void eat() {
     System.out.println(name + "小狗在啃骨头!!");
    }
   };
   dog.eat();

  }

 

以上是关于2017.12.13T19_B2_6.4内部类的主要内容,如果未能解决你的问题,请参考以下文章

2017.12.13T19_B2_6zuoye

2017.12.6T19_B2_3.4

2017.12.1T19_B2_4——2

2017.12.1T19_B2_5zuoye

2017.12.1T19_B2_4.2

2017.12.1T19_B2_1