zoukankan      html  css  js  c++  java
  • Java基础学习篇---------封装

    一、类和对象分配内存

      

    二、Java中的内部类  : 可以直接去访问外部类的所有属性(包括私有成员)

      1.Java中成员内部类

      (1).内部类的方法可以直接访问外部类的类中的所有成员变量

      (2).外部类不能直接去访问内部类的私有的成员变量,可以通过创建内部类的对象取间接的去访问

      (3)外部去声明内部类的方法   即:外部类.内部类 对象名 = new 外部类对象.new 内部类( );

        Inter.Inter1  inter = new Inter().new Inter1();

      (4).如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法

         如果要访问外部类的成员变量,可以使用 外部类的对象.this 关键字

          public class HelloWorld{
          //外部类的私有属性name
          private String name = "imooc";
          //外部类的成员属性
          int age = 20;
          //成员内部类Inner
          public class Inner {
          String name = "爱慕课";
          //内部类中的方法
          public void show() {
          System.out.println("外部类中的name:" + HelloWorld.this.name);
          System.out.println("内部类中的name:" + name);        //默认为内部类成员变量
          System.out.println("外部类中的age:" + age);
        }
      }  
          //测试成员内部类
          public static void main(String[] args) {
          //创建外部类的对象  
          HelloWorld o = new HelloWorld ();
          //创建内部类的对象
          Inner inn = o.new Inner();
          //调用内部类对象的show方法
          inn.show();
        }
      }

      (5).方法中的内部类

    class InterNumber{
    public void printf(final int num){
    final int num1 = 0;
    class InterNumber1{
    public void println(){
    System.out.printf(""+num);
    System.out.printf(""+num1);
    }
    }
    }

    }
    方法中的内部类想访问该方法的参数以及成员变量,必须加上final这个关键字,它的作用只是起到一个标记的作用

        

        

      2.Java中静态内部类

      (1).静态内部类不能直接访问外部类的非静态成员(因为没有this这个指针),但可以通过 new 外部类().成员 的方式访问

      (2).如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员

      (3).创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类()

    public class MyClass {

    // 外部类中的静态变量score
    private static int score = 84;
    private int sum = 10;
    // 创建静态内部类
    public static class SInner {
    public void show() {
    System.out.println("访问外部类中的score:" + MyClass.score);
    System.out.println("访问内部类中的sum:" + new MyClass().sum);
    }
    }

    // 测试静态内部类
    public static void main(String[] args) {
    // 直接创建内部类的对象
    SInner si = new SInner();
    // 调用show方法
    si.show();
    }
    }

    3.
    Java 中的方法内部类
    由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和static修饰符
    public class MyClass {
    private String name = "爱慕课";
    // 外部类中的show方法
    public void show() {
    // 定义方法内部类
    class MInner {
    int score = 83;
    public int getScore() {
    return score + 10;
    }
    }

    // 创建方法内部类的对象
    MInner mi = new MInner();
    // 调用内部类的方法
    int newScore = mi.getScore();
    System.out.println("姓名:" + name + " 加分后的成绩:" + newScore);
    }
    // 测试方法内部类
    public static void main(String[] args) {
    // 创建外部类的对象
    MyClass mo = new MyClass();
    // 调用外部类的方法
    mo.show();
    }
    }



      
  • 相关阅读:
    波段是金牢记六大诀窍
    zk kafka mariadb scala flink integration
    Oracle 体系结构详解
    图解 Database Buffer Cache 内部原理(二)
    SQL Server 字符集介绍及修改方法演示
    SQL Server 2012 备份与还原详解
    SQL Server 2012 查询数据库中所有表的名称和行数
    SQL Server 2012 查询数据库中表格主键信息
    SQL Server 2012 查询数据库中所有表的索引信息
    图解 Database Buffer Cache 内部原理(一)
  • 原文地址:https://www.cnblogs.com/liunx1109/p/9772903.html
Copyright © 2011-2022 走看看