• Java之内部类



    /*
    * 内部类
    * 1. Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类
    *
    * 2.内部类的分类:成员内部类(静态、非静态) vs 局部内部类(方法内、代码块内、构造器内)
    *
    * 3.成员内部类:
    * 一方面,作为外部类的成员:
    * >调用外部类的结构
    * >可以被static修饰
    * >可以被4种不同的权限修饰
    *
    * 另一方面,作为一个类:
    * > 类内可以定义属性、方法、构造器等
    * > 可以被final修饰,表示此类不能被继承。言外之意,不使用final,就可以被继承
    * > 可以被abstract修饰
    *
    *
    * 4.关注如下的3个问题
    * 4.1 如何实例化成员内部类的对象
    * 4.2 如何在成员内部类中区分调用外部类的结构
    * 4.3 开发中局部内部类的使用 见《InnerClassTest1.java》
    *
    */
    public class InnerClassTest {
    public static void main(String[] args) {

    //创建Dog实例(静态的成员内部类):
    Person.Dog dog = new Person.Dog();
    dog.show();
    //创建Bird实例(非静态的成员内部类):
    // Person.Bird bird = new Person.Bird();//错误的
    Person p = new Person();
    Person.Bird bird = p.new Bird();
    bird.sing();

    System.out.println();

    bird.display("黄鹂");

    }
    }


    class Person{

    String name = "小明";
    int age;

    public void eat(){
    System.out.println("人:吃饭");
    }


    //静态成员内部类
    static class Dog{
    String name;
    int age;

    public void show(){
    System.out.println("卡拉是条狗");
    // eat();
    }

    }
    //非静态成员内部类
    class Bird{
    String name = "杜鹃";

    public Bird(){

    }

    public void sing(){
    System.out.println("我是一只小小鸟");
    Person.this.eat();//调用外部类的非静态属性
    eat();
    System.out.println(age);
    }

    public void display(String name){
    System.out.println(name);//方法的形参
    System.out.println(this.name);//内部类的属性
    System.out.println(Person.this.name);//外部类的属性
    }
    }


    public void method(){
    //局部内部类
    class AA{

    }
    }

    {
    //局部内部类
    class BB{

    }
    }

    public Person(){
    //局部内部类
    class CC{

    }
    }



    }
  • 相关阅读:
    MySQL分区和分布性能测试[转]
    在独立的javascript文件中获取当前项目的http路径
    解决在OFFICE平台传输数据慢的问题,使用GZIP+JSON替代WEBSERVICE提供数据
    开发流程与各层软件选型
    [转]Linux下shell的工作原理
    C# 3.0中的操作符=>
    [转]Linux用户口令的管理
    Linux基本命令篇 网络管理
    [转]Linux查看磁盘使用情况命令
    恢弘的钢琴曲《出埃及记》
  • 原文地址:https://www.cnblogs.com/wpy188/p/12081691.html
Copyright © 2020-2023  润新知