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

    内部类

    成员内部类
    // Computer类和Part成员内部类
    public class Computer {
        private String name = "计算机";
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        private void call(){
            System.out.println("我叫计算机不是计算器");
        }
        int fn(int a){
            this.call();
            System.out.println("我是普通方法");
            return 6;
        }
        protected  void f(){
            System.out.println("我是父类受保护的方法");
        }
        class Part{
            String ram = "64G";
            String disk = "固态硬盘";
            void fn(){
                System.out.println(name); // 直接访问父类的私有属性
                call(); // 直接访问父类的私有方法
            }
        }
    }
    // 主类
    public class MyClass {
        public static void main(String[] args) {
            Computer computer = new Computer();
            Computer.Part part = computer.new Part();  // 通过外部类去new内部类
            part.fn();
        }
    }
    
    静态内部类 // 内部类用static修饰,static修饰类也只能修饰内部类和private一样
    public class Computer {
        private static String brand = "品牌";
        private String name = "计算机";
        private void call(){
            System.out.println("我叫计算机不是计算器");
        }
        static class Device{
            String screen = "AOC";
            void fun(){
                System.out.println(brand); // 静态的类只能访问外部类的静态方法和静态属性
                call(); // 这是不行的static加载比这方法快
            }
        }
    }
    
    // 使用静态类部类
    Computer.Device device = new Computer.Device();
    
    // 问题? 为什么不能通过外部类实例去new静态类部类
    // 回答! 静态修饰跟着类走不能通过实例访问(static的基础知识)
    
    局部内部类
    只能在方法内部访问
    public class Computer {
        int fn(int a){
    // 在一个方法中去定义一个类,这个类不能加修饰符,此时也不是default,default本来也不能修饰类
            class DiffrentName{
                String brand1 = "小米";
                String brand2= "苹果";
            }
            // 只能方法内使用
            new DiffrentName();
            return 6;
        }
    }
    
    
    匿名内部类
    // 匿名内部类实现接口
    new animalAction(){
                @Override
                public int hashCode() {
                    return super.hashCode();
                }
    
                @Override
                public void eat() {
    
                }
    
                @Override
                public void drink() {
    
                }
    
                @Override
                public void la() {
    
                }
    
                @Override
                public void sa() {
    
                }
            };
    
    public interface animalAction {
        // 属性都是public static final
        int a = 1;
        // 没有构造函数不能被new
        // 方法都是public abstract 可省略
        void eat();
        void drink();
        void la();
        void sa();
    }
    
    你的努力有资格到拼天赋的程度吗?
  • 相关阅读:
    手机端页面下端出现滑动条
    Centos7中文乱码问题的解决
    VirtualBox虚拟机克隆迁移步骤
    利用U盘安装win2008r2系统的步骤
    virtuoso操作graph的方法--查询和删除
    excel中的数据导出为properties和map的方法
    virtuoso装载大的rdf文件的方法
    eclipse创建maven的web项目
    揭开WebService的神秘面纱
    几个学习的网站
  • 原文地址:https://www.cnblogs.com/wchjdnh/p/14423352.html
Copyright © 2011-2022 走看看