zoukankan      html  css  js  c++  java
  • 内部类的作用?1、抽象类中包含一个内部接口如何实现与调用 ;2、接口中包含一个内部抽象类如何调用

    内部类作用:

    1、可以直接调用外部类的私有成员变量

    package com.swift;
    
    public class Neibulei 
    {
        public static void main(String[] args) 
        {
            new Outer("swift").getprint();
        }
    }
    class Outer
    {
        private String name;
        public Outer(String name)
        {
            this.name=name;
        }
        public void getprint()
        {
            new Inner().print();
        }
        class Inner
        {
            public void print()
            {
                System.out.println("The name is "+name);
            }
        }
    }

    否则,如果内部类在外边则需要进行复杂的参数传递

    参数传递法如下:

    package com.swift;
    
    public class Neibulei2 
    {
        public static void main(String[] args) 
        {
            Outer2 o2=new Outer2("swift");
            o2.getprint(o2);
        }
    }
    class Outer2
    {
        private String name;
        public Outer2(String name)
        {
            this.name=name;
        }
        public void getprint(Outer2 o2)
        {
            new Inner2().print(o2);
        }
        public String getName()
        {
            return this.name;
        }
        
    }
    class Inner2
        {
            public void print(Outer2 o2)
            {
                System.out.println("The name is "+o2.getName());
            }
        }

    或者也可以用构造方法通过this关键字传递

    package com.swift;
    
    class Neibulei3 
    {
        public static void main(String[] args) 
        {
            new Outer3("swift").getprint();
        }
    }
    class Outer3
    {
        private String name;
        public Outer3(String name)
        {
            this.name=name;
            
        }
        public void getprint()
        {
            new Inner3(this).print();
        }
        public String getName()
        {
            return this.name;
        }
        
    }
    class Inner3
        {
            private Outer3 outer;
            public Inner3(Outer3 outer)
            {
                this.outer=outer;
            }
            public void print()
            {
                System.out.println("The name is "+outer.getName());
            }
        }

    也可以这样写

    package com.swift;
    
    public class Neibulei4
    {
        public static void main(String[] args) 
        {
            
            Outer4.Inner4 in= new Outer4().new Inner4();
            in.print();
        }
    }
    class Outer4
    {
        private String name="swift";
        
               class Inner4
               {
            public void print()
               {
                System.out.println("The name is "+name);
               }
            }
    
    
    }

    所以一个篇代码也可以改写成如下

    new Outer("swift").new Inner().print();

    或者

    Outer.Inner in=new Outer("swift").new Inner();
    in.print();

    同时内部也可以放在外部类的方法当中

    package com.swift;
    
    public class Neibu {
        public static void main(String[] args) {
            new Out().fun(100);
        }
    }
    class Out {
        private String name = "swift";
        public void fun(int temp) {
            class In {
                public void print() {
                    System.out.println("temp =" + temp);
                    System.out.println("the name is " + name);
                }
            }
            new In().print();
        }
    }

    1、抽象类中包含一个内部接口如何实现与调用


    2、接口中包含一个内部抽象类如何调用

  • 相关阅读:
    老罗android开发视频教程学习完了
    微软云工具
    Andriod视频http://pan.baidu.com/share/link?shareid=7300&uk=3339495714
    微软图片编辑工具
    Smartdraw世界上最流行的商业绘图软件
    arcgis安装问题SDK开始安装不了
    光学字符识别OCR
    Android实现OCR扫描识别数字图片之图片扫描识别
    android实现图片识别的几种方法
    开源的asp.net工作流程引擎。 http://ccflow.org
  • 原文地址:https://www.cnblogs.com/qingyundian/p/7751515.html
Copyright © 2011-2022 走看看