Java面向对象知识点11:内部类

直接看代码吧

package com.hiyo.Class;

/**
 *内部类的简单说明
 *Author:hiyo585
 * Company:hiyo design studios
 * 在Outer类的内部定义一个Inner类,则Inner类称为内部类
 * Outer类称为外部类。
 * 内部类可以声明为public或private,访问方法和成员变量和
 * 成员方法完全相同。
 *  * */
class Outer {
    private String info = "外部类的private属性";
    //System.out.println("Hello");错误,
    //调用println()方法不是类中定义的方法,会出错误。
    //Java为面向对象语言,不允许耽搁的语句在类中出现。
    /*
    class A {//成员变量;//构造方法;//普通方法;//内部类;}
    在类里面最多只能有这些
    上面的代码加上打括号,让这句话变成普通块,或者静态普通块,
    这些也属于普通方法。
     */
    //每次实例化都会执行构造块中的代码
    //但是静态代码块中的代码只执行一次。
    static{System.out.println("静态构造代码块中的代码");}//静态构造块
    {System.out.println("构造代码块中的代码");}//构造块

    //内部类的定义方法
    class Inner {
        private int age = 30 ;
        public void print() {
            System.out.println(info);//访问外部类的私有属性
            //这里是直接访问,info,不需要外部类实例化。
        }
    };
    public void fun() {
        new Inner().print(); //通过内部类对象调用方法。
    }
    public void outPrint() {
        System.out.println(new Inner().age);
        //外部类访问内部类的私有属性
        //需要实例化内部类,并访问私有属性
    }
    //static定义的内部类,称为外部类
    //使用static定义的内部类称为外部类,使用static声明的
    //内部类不能访问非static的外部类属性
    static class Inner2 {
       public void print(){
          // System.out.println(info);无法访问非static属性
           System.out.println("static内部类的方法");
       }
    }
    //在方法中也可以定义内部类
    public void fun(int temp){
        class Inner3 {
            public void print(){
                System.out.println("外部类中的属性" + info);
                System.out.println("方法中的参数"+ temp ) ;
            }
        }
        new Inner3().print();
    }

}
public class InnClass {
    public static void main(String[] args) {
        new Outer().fun();
        new Outer().fun();
        new Outer().outPrint();
        new Outer.Inner2().print();
        //外部访问内部类
        //外部类.内部类 内部类对象 = 外部类实例.new 内部类();
        Outer out = new Outer() ;
        Outer.Inner in = out.new Inner() ;
        in.print();
        out.fun(30);
    }
}
/*
静态构造代码块中的代码
构造代码块中的代码
外部类的private属性
构造代码块中的代码
外部类的private属性
构造代码块中的代码
30
static内部类的方法
构造代码块中的代码
外部类的private属性
外部类中的属性外部类的private属性
方法中的参数30

 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值