Java内部类的简介说明

Java-面试王 Java面经 发布时间:2021-08-29 22:32:11 阅读数:9267 1

内部类简介

内部类的简介:
    我们将一个类中嵌套了另一个类结构A
       我们将类结构A称之为"内部类"
例:
class Outer{
    private String str ="外部类中的字符串-java265.com";
    //************************** 
    //定义一个内部类
    class Inner{
        private String inStr= "内部类中的字符串";
        //定义一个普通方法
        public void print(){
            //调用外部类的str属性
            System.out.println(str);
        }
    }
    //************************** 
    //在外部类中定义一个方法,该方法负责产生内部类对象并调用print()方法
    public void fun(){
        //内部类对象
        Inner in = new Inner();
        //内部类对象提供的print
        in.print();
    }
}
public class Test{
    public static void main(String[] args)
    {
        //创建外部类对象
        Outer out = new Outer();
        //外部类方法
        out.fun();
    }
}
-------运行以上代码,将输出以下信息----
 外部类中的字符串-java265.com
例2:
class Outer{
    private String outStr ="Outer中的字符串";
    public String getOutStr()
    {
        return outStr;
    }
    public void fun(){  //2
        //this表示当前对象
        Inner in = new Inner(this); //3
        in.print();                 //5
    }
}
class Inner{
    private String inStr= "Inner中的字符串";
    private Outer out;
    //构造注入
    public Inner(Outer out)  //3
    {
        this.out=out;       //4.为Inner中的out变量初始化
    }
    public void print(){    //6
        System.out.println(out.getOutStr()); //7
    }
} 
public class Test{
    public static void main(String[] args)
    {
        Outer out = new Outer();  //1.
        out.fun(); //2.
    }
}
-----运行以上代码,将输出以下信息----
Outer中的字符串 

内部类的优缺点

内部类的优点
  1. 内部类与外部类可以方便的访问彼此的私有域(包括私有方法、私有属性)
  2. 内部类是另外一种封装,对外部的其他类隐藏
  3. 内部类可以实现java的单继承局限
内部类的缺点
结构复杂

内部类实现多继承

 
class A {
    private String name = "A类的私有域";
    public String getName() {
        return name;
    }
}
class B {
    private int age = 20;
    public int getAge() {
        return age;
    }
}
class Outter {
    private class InnerClassA extends A {
        public String name() {
            return super.getName();
    }
}
    private class InnerClassB extends B {
        public int age() {
            return super.getAge();
    }
}
    public String name() {
        return new InnerClassA().name();
    }
    public int age() {
        return new InnerClassB().age();
    }
}
public class Test2 {
        public static void main(String[] args) {
            Outter outter = new Outter();
            System.out.println(outter.name());
            System.out.println(outter.age());
        }
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaMianJing/202108/1630247586912.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者