zoukankan      html  css  js  c++  java
  • java内部类讲解

    一、内部类

    1、定义

    ​ 在一个类中,定义另外一个类的代码结构,通常定义在类内部的类称为“内部类”,外面的类称为“外部类”,在逻辑关系上内部类与外部类是从属关系,比如:一个People类存在收货地址(收货人,收货联系方法)

    2、分类

    2.1、普通内部类

    ​ (inner class) 一个类A中定义另外一个类B,其中类B就是类A的内部类,也是类A的一部分

    public class People {
        private String pname="小朱";
        
        public void sayhello(){
            System.out.println("let us say hello");
            //知识点1:外部类的方法中,可以使用内部类的属性,方法
            new Address().addressName="武汉";
            new Address().contentName="小胡";
            new Address().showAddressInfo();
            
        }
    
        /**
         * 定义普通内部类 收货地址
         */
        class Address{
            private String addressName;//收货地址
            private String contentName;//联系人
            
            public void showAddressInfo(){
                System.out.println("联系人:" + contentName + "收货地址:" + addressName);
                //内部类的方法 可以直接访问外部类的属性
                //由于通常情况访问类的属性都必须创建对象才能使用
                System.out.println("访问外部类的属性:" + pname);
            }
            
        }
    }
    
    //使用
            //1.创建内部类的对象 必须依赖外部类的创建
            People people=new People();
            //创建内部类
            People.Address address=people.new Address();
            //注意  这里的address对象不能访问  私有属性,方法
            address.showAddressInfo();
    

    注意两点

    • 外部类的方法中,可以直接访问内部类的所有成员(包括私有)
    • 外部类的方法中,也可以直接访问外部类的所有成员,当外部类和内部类都有同样的属性

    2.2、静态内部类

    ​ 在普通内部类基础上,增加static关键字,与静态方法类似,满足静态的要求

        /**
         * 定义静态内部类
         */
        static class Card{
            private static String cardNo="422202199809302439";
            private String cardName="身份证";
            
            //静态方法
            public static void showCard(){
                System.out.println("身份证号:"+cardNo);
            } //非静态方法
            public void showCard2(){
                System.out.println("身份证:"+cardName);
            }
        }
    
    //使用
            //2、创建静态内部类的对象
            People.Card.showCard();
            //创建静态内部类的对象
            People.Card card=new People.Card();
            card.showCard2();
    

    2.3、方法内部类

    ​ 在一个方法中定义的类,其中这个类只属于该方法,也只能在该方法中使用

        /**
         * 方法内部类(在一个方法中定义一个类)
         */
        public void method1(){
            int score =90;
            class MyClass{
                String subject="java";
                public  void method2(){
                    System.out.println(pname + subject + "科目的分数:" + score);
                }
            }
            //调用方法里面的类
            MyClass  mycls = new MyClass();
            mycls.method2();
        }
    //调用
            //调用方法内部类
            people.method1();
    
    

    2.4、匿名内部类

    ​ 定义一个没有类名,只有对方法的具体实现,通常它依赖于实现关系(接口)或继承关系(父类)

    基于接口

    public interface MyInterface {
        public void study();
    
        public void work();
    }
    
    //测试
            //通常实现接口对象的方法
            Student student=new Student("小朱");
            student.study();
            student.work();
    
    
            //匿名类实现接口
            MyInterface myInterface=new MyInterface() {
                @Override
                public void study() {
                    System.out.println("这个人也好好学习");
                }
    
                @Override
                public void work() {
                    System.out.println("这个人也好好工作");
                }
            };
                myInterface.study();
                myInterface.work();
    

    基于继承关系

    public class MyClass {
        public void service(){
            System.out.println("提供服务的方法。");
        }
    }
    
    //测试
    public class MyClass {
        public void service(){
            System.out.println("提供服务的方法。");
        }
    }
    
  • 相关阅读:
    在DevExpress程序中使用SplashScreenManager控件实现启动闪屏和等待信息窗口
    使用Setup Factory安装包制作工具制作安装包
    PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库
    在DevExpress中使用CameraControl控件进行摄像头图像采集
    读取数据库信息构建视图字段的备注信息,方便程序代码生成
    混合框架中Oracle数据库的还原处理操作
    使用图片视频展示插件blueimp Gallery改造网站的视频图片展示
    .NET缓存框架CacheManager在混合式开发框架中的应用(1)-CacheManager的介绍和使用
    在Winform界面菜单中实现动态增加【最近使用的文件】菜单项
    文字处理控件TX Text Control的使用
  • 原文地址:https://www.cnblogs.com/qzwx63/p/13876639.html
Copyright © 2011-2022 走看看