zoukankan      html  css  js  c++  java
  • java9-6 内部类

    1、 内部类概述:
        把类定义在其他类的内部,这个类就被称为内部类。
        举例:在类A中定义了一个类B,类B就是内部类。

    内部的访问特点:
        A:内部类可以直接访问外部类的成员,包括私有。
        B:外部类要访问内部类的成员,必须创建对象。

    class Outer {
    private int num = 10;
    
    class Inner {
    public void show() {
    System.out.println(num);
    }
    }
    
    public void method() {
    //找不到符号
    //show();
    
    Inner i = new Inner();
    i.show();
    }
    
    }
    
    class InnerClassDemo {
    public static void main(String[] args) {
    
    }
    }

    2、 内部类位置
        成员位置:在成员位置定义的类,被称为成员内部类。
        局部位置:在局部位置定义的类,被称为局部内部类。


        成员位置:在成员位置定义的类,被称为成员内部类。

     1 class Outer {
     2 private int num = 10;
     3 
     4 //成员位置 类里方法外?
     5 /*
     6 class Inner {
     7 
     8 }
     9 */
    10 public void method() {
    11 //局部位置 类里方法内?
    12 class Inner {
    13 
    14 }
    15 }
    16 }
    17 
    18 class InnerClassDemo2 {
    19 public static void main(String[] args) {
    20 
    21 }
    22 }

    3、 成员内部类:
          如何直接访问内部类的成员。
          外部类名.内部类名 对象名 = 外部类对象.内部类对象;

     1 class Outer {
     2 private int num = 10;
     3 
     4 class Inner {
     5 public void show() {
     6 System.out.println(num);
     7 }
     8 }
     9 }
    10 
    11 class InnerClassDemo3 {
    12 public static void main(String[] args) {
    13 //需求:我要访问Inner类的show()方法
    14 //Inner i = new Inner();
    15 //i.show();
    16 
    17 //格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
    18 Outer.Inner oi = new Outer().new Inner();
    19 oi.show();
    20 }
    21 }

    面试题:
        要求请填空分别输出30,20,10。

     1 class Outer {
     2   public int num = 10;
     3 class Inner {
     4   public int num = 20;
     5   public void show() {
     6     int num = 30;
     7       System.out.println(XX);
     8       System.out.println(XX);
     9       System.out.println(XX);
    10     }
    11     }
    12 }
     1 答案:
     2 class Outer {
     3   public int num = 10;
     4 class Inner {
     5   public int num = 20;
     6   public void show() {
     7   int num = 30;
     8       System.out.println(num);
     9       System.out.println(this.num);
    10       //System.out.println(new Outer().num);
    11       System.out.println(Outer.this.num); //限定了this.num的范围
    12 }
    13 }
    14 }
    15 class InnerClassTest {
    16     public static void main(String[] args) {
    17         Outer.Inner oi = new Outer().new Inner();
    18            oi.show();
    19     }    
    20 }
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    防止跨域(jsonp详解)
    java-文件和I/O
    spring-AOP框架(基于AspectJ注解配置AOP)
    @RequestMapping、@Responsebody、@RequestBody和@PathVariable详解(转)
    spring-IOC容器(三)
    spring-IOC容器(二)
    spring-IOC容器(一)
    Spring4相关jar包介绍(转)
    Eclipse设置自动提示(转)
    java-环境安装及配置
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5863104.html
Copyright © 2011-2022 走看看