• 权限修饰符、内部类


    权限修饰符

    概述

      在Java当中提供了四种权限修饰符,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限。

    public:公共的

    protect:受保护的

    (default):默认不写

    private:私有的

    不同的权限修饰符有不同的访问能力

     publicprotected(default)private
    同一类中
    同一包下不同类中 ×
    不同包的子类中 × ×
    不同包的非子类中 × × ×

    可见,private 是最小的权限,public是最大的权限。

    编写代码建议使用:

      成员变量:使用private ,隐藏细节

      构造方法:使用public,方便创建对象

      成员方法:建议使用public,方便调用。

      备注:【默认级别】,是不写的

    内部类

    概述

        什么是内部类

        将类A定义在另一个类B里面,里面的类A就称为内部类,类B则称为外部类。

    成员内部类

      成员内部类:定义在类中方法外的类

    格式:

    修饰符  class 外部类名称 {
        修饰符 class 内部类名称{
            //......
        }
        //.....
    }

    在描述事物时,如果一个事物包含另外的其他的事物,就可以使用内部类这种结构。定义在【成员位置】

    比如:心脏和身体的关系,此时就需要使用内部类的结构来描述这类事物。

    访问特点

      内部类可以直接访问外部类的成员,包括私有成员

      外部类要访问内部类的成员,必须建立内部类的对象

    创建内部类对象的格式

    外部类类名.内部类类名  对象名    =   new   外部类类名().new 内部类类名();

    备注:内部类仍然是一个独立的类,编译之后依然会生成一个独立的.class文件,该类文件名称:外部类类名$内部类名.class

    匿名内部类【重点】

      匿名内部类:是内部类的简写。他本质其实是一个带着具体实现父类或者父接口的匿名的子类对象

      开发中,最常用到的内部类是【匿名内部类】

    前提

      匿名内部类必须【继承一个父类】或者【实现一个接口】,伴随着重写父类或者父接口当中的抽象方法。

    new 父类名或者父接口名 {
        // 方法的重写
        @Override
        public void method(){
            // 重写的方法体内容。。。
        }
    };

    通常在方法的形式参数是接口或者抽象类时,一般将匿名内部类作为实参进行参数传递。

    public interface Animal {
        //
        public abstract void eat();
    }
    // 定义一个启动类
    public class DemoAnonymous {
        // 定义成员方法
        public static void showEat(Animal animal){
            animal.eat();
        }
        
        public static void main(String[] args) {
            // 采用匿名内部类的方式来写
            // 多态写法  
            // 等号左边:接口
            // 等号右边:本质是Animal接口的子类对象
            Animal animal = new Animal() {
                  @Override
                public void eat(){
                    System.out.println("猫吃鱼");
                }
            };
            showEat(animal); // 猫吃鱼  
            // 简化一下
            showEat(new Animal(){
                @Override
                public void eat(){
                    System.out.println("猫吃鱼");
                }
            });
        }   
    }
  • 相关阅读:
    布局重用 include merge ViewStub
    AS 常用插件 MD
    AS 2.0新功能 Instant Run
    AS .ignore插件 忽略文件
    AS Gradle构建工具与Android plugin插件【大全】
    如何开通www国际域名个人网站
    倒计时实现方案总结 Timer Handler
    AS 进行单元测试
    RxJava 设计理念 观察者模式 Observable lambdas MD
    retrofit okhttp RxJava bk Gson Lambda 综合示例【配置】
  • 原文地址:https://www.cnblogs.com/wazesx2580/p/14045254.html
Copyright © 2020-2023  润新知