• 内部类三:嵌套类


    嵌套类定义

    如果一个内部类生命为static,这种静态内部类称为嵌套类,嵌套类的对象不需要持有外围类的对象的引用。

    1) 要创建嵌套类的对象,并不需要器外围类的对象

    2)不能从嵌套类的对象中访问非静态的外围类对象,因为嵌套类的对象没有指向外围类对象的引用,因此无法访问外围类对象。

    嵌套类与普通内部类还有一个区别,普通内部类的字段与方法,只能放在类的外部层次上,所以普通内部类不能有static数据和static字段,也不能有嵌套类。

    但是嵌套类都可以包含这写内容

    package chapter10;
    
    public class Parcel11 {
        
        private String hello="hello world";
        
        private static String name="zhangsan";
        
        private static class ParcelContents implements Contents {
            private int i = 11;
    
            @Override
            public int value() {
                //嵌套类内部访问外围类对象报错
                //System.out.println(hello);//Error: Cannot make a static reference to the non-static field hello
                
                //嵌套类内部访问外围类的static变量
                System.out.println(name);
                return i;
            }
    
        }
    
        protected static class ParcelDestination implements Destination {
    
            private String label;
    
            private ParcelDestination(String whereTo) {
                label = whereTo;
            }
    
            @Override
            public String readLabel() {
                return label;
            }
    
            /**
             * 嵌套类的static方法
             */
            public static void f() {
            }
    
            /**
             * 嵌套类的static变量
             */
            static int x = 10;
            
            /**
             *嵌套类中的嵌套类
             */
            static class AnthorLevel {
                public static void f() {
                }
                
                static int x=10;
    
            }
    
        }
        
        
        public static Destination destination(String s) {
            return new ParcelDestination(s);
        }
        
        public static Contents contents() {
            return new ParcelContents();
        }
        
        public static void main(String[] args) {
            
            /**
             * 外围类的静态方法,此方法中是没有this引用的
             * 之前在外围类的静态方法中,需要采用如下语法
             * Parcel11 p=new Parcel11();
             * Parcel11.Destination d= p.new Destination();
             * 
             * 现在可以直接创建嵌套类
             */
            Destination d2=new ParcelDestination("test"); //直接创建嵌套类
            
            Contents c=new ParcelContents();
            
        }
    }
  • 相关阅读:
    网上找的,C# 小票打印机 直接打印,备用
    SlickUpload 破解方法
    全文索引的一点个人总结
    在ASP.NET中利用SlickUpload来上传大文件
    再谈iframe自适应高度 By 大米
    发送邮件到 163、Gmail、QQ 等邮箱时,全丢垃圾箱中怎么办?
    iis下Awstats的安装使用说明
    AutoCompleteExtender控件出现undefined和null现象
    IT业史上最棒的图片之一
    EnableViewState="false",取dropdownlist的值
  • 原文地址:https://www.cnblogs.com/cplinux/p/13091484.html
Copyright © 2020-2023  润新知