• 包、修饰符、内部类、匿名内部类(java基础知识十)


    1.package关键字的概述及作用

    * A:为什么要有包
        * 将字节码(.class)进行分类存放 
    * B:包的概述
        *  
    * C:包的作用
        * 包名要定义在第一行,
        * 包名.*这个包下所有的类都可见
        * 具体的类比较好,能提高效率 

    2.包的定义及注意事项

    * A:定义包的格式
      * package 包名;
      * 多级包用.分开即可
    * B:定义包的注意事项
      * A:package语句必须是程序的第一条可执行的代码
      * B:package语句在一个java文件中只能有一个
      * C:如果没有package,默认表示无包名(以前定义的类都没包名)
    * C:案例演示
    * 包的定义及注意事项

    3.import关键字的概述和使用

    * A:案例演示
        * 为什么要有import
    * B:导包格式
        * import 包名(全包名);
        * 注意:
        * 这种方式导入是到类的名称。
        * 虽然可以最后写*,但是不建议。
    * C:package,import,class有没有顺序关系(面试题)
        * package 第一行,import 第二,class 第三 

    4.类及其组成所使用的常见修饰符

    * A:修饰符:
        * 权限修饰符:private,默认的(defalut),protected,public
        * 状态修饰符:static,final
        * 抽象修饰符:abstract
    * B:类:
        * 权限修饰符:默认修饰符,public
        * 状态修饰符:final
        * 抽象修饰符:abstract
        * 用的最多的就是:public
    * C:成员变量:
        * 权限修饰符:private,默认的,protected,public
        * 状态修饰符:static,final
        * 用的最多的就是:private
    * D:构造方法:
        * 权限修饰符:private,默认的,protected,public
        * 用的最多的就是:public
    * E:成员方法:
        * 权限修饰符:private,默认的,protected,public
        * 状态修饰符:static,final
        * 抽象修饰符:abstract
        * 用的最多的就是:public
    * F:除此以外的组合规则:
        * 成员变量:public static final
        * 成员方法:
            * public static 
            * public abstract
            * public final

    5.内部类概述和访问特点

     A:内部类概述
        *  
    * B:内部类访问特点
        * a:内部类可以直接访问外部类的成员,包括私有。
        * b:外部类要访问内部类的成员,必须创建对象。

    6.内部类分类及成员内部类的直接使用

    * A:按照内部类位置分类
        * 成员位置:在成员位置定义的类,被称为成员内部类。    
        * 局部位置:在局部位置定义的类,被称为局部内部类。
    * B:成员内部类
        * 如何在测试类中直接访问内部类的成员。
        * 外部类名.内部类名 对象名 = 外部类对象.内部类对象;

    7.成员内部类的常见修饰符及应用

    * A:成员内部类的修饰符:
      * private 为了保证数据的安全性
      * static 为了方便访问数据
      * 注意:静态内部类访问的外部类数据必须用静态修饰。
    * B:成员内部类被静态修饰后的访问方式是:
      * 外部类名.内部类名 对象名 = new 外部类名.内部类名();
      * 非静态的成员内部类中,不能定义静态的成员

    8.成员内部类的面试题

    要求:使用已知的变量,在控制台输出30,20,10class Outer {
                public int num = 10;
                class Inner {
                    public int num = 20;
                    public void show() {
                        int num = 30;
                        System.out.println(num);
                        System.out.println(this.num);
                        System.out.println(Outer.this.num);
                    }
                }
            }
            class InnerClassTest {
                public static void main(String[] args) {
                    Outer.Inner oi = new Outer().new Inner();
                    oi.show();
                }    
            }

    * 局部内部类访问局部变量,局部变量必须用final修饰。

    9.匿名内部类的格式和理解

    * A:匿名内部类
        * 就是内部类的简化写法。
    * B:前提:存在一个类或者接口
        * 这里的类可以是具体类也可以是抽象类。
    * C:格式:

            new 类名或者接口名(){      //继承这个类或者实现这个类
                重写方法;             //重写类中或接口中的方法
            }.方法名();
    * D:本质是什么呢?
        * 是一个继承了该类或者实现了该接口的子类匿名对象。

    10.匿名内部类在开发中的应用

       //这里写抽象类,接口都行
            abstract class Person {
                public abstract void show();
            }
            class PersonDemo {
                public void method(Person p) {
                    s.show();
                }
            }
            class PersonTest {
                public static void main(String[] args) {
                    //如何调用PersonDemo中的method方法呢?
                    PersonDemo pd = new PersonDemo ();
                    pd.method(new Person() {
                        public void show() {
                            System.out.println(“show”);
                        }
                    });
                }
            }

    11.匿名内部类的面试题

    按照要求,补齐代码
            interface Inter { void show(); }
            class Outer { 
                public static Inter method(){
                    return new Inter(){
                        public void show(){
                            System.out.println("HelloWorld!");
                        }
                    };
                }
            }
            class OuterDemo {
                public static void main(String[] args) {
                      Outer.method().show();
                      //链式编程:调用方法返回的是对象,还可以继续调用方法
                  }
            }
            要求在控制台输出”HelloWorld”
  • 相关阅读:
    【Anagrams】 cpp
    【Count and Say】cpp
    【Roman To Integer】cpp
    【Integer To Roman】cpp
    【Valid Number】cpp
    重构之 实体与引用 逻辑实体 逻辑存在的形式 可引用逻辑实体 不可引用逻辑实体 散弹式修改
    Maven项目聚合 jar包锁定 依赖传递 私服
    Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
    mysql案例~tcpdump的使用
    tidb架构~本地化安装
  • 原文地址:https://www.cnblogs.com/wanghui1316/p/5437073.html
Copyright © 2020-2023  润新知