zoukankan      html  css  js  c++  java
  • 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{

    }
    }



    }
  • 相关阅读:
    2016.01.04接触spring一年开始读spring源码
    hibernate 各历史版本下载 spring各历史版本下载
    mongodb 安装使用遇到的问题记录
    EmEditor处理大文本文件
    linux的常用易忘命令
    签名的html
    添加用户-查看用户列表-禁止默认root登陆
    今天领导分享了一个探测端口的命令-linux下提示bash:command not found
    【原创】java 获取十个工作日之前或之后的日期(算当天)-完美解决-费元星
    Oracle 完全理解connect by-详细脚本-可实战
  • 原文地址:https://www.cnblogs.com/wpy188/p/12081691.html
Copyright © 2011-2022 走看看