2020-02-26(观看视频笔记)

1、形式参数和返回值的问题

  (1)形式参数:

      类名:需要该类的对象

      抽象类名:需要该类的子类对象

      接口名:需要该接口的实现类对象

  (2)返回值类型

      类名:返回的是该类的对象

      抽象类名:返回的是该类的子类对象

      接口名:返回的是该接口的实现类的对象

  (3)链式编程

      对象.方法1().方法2().方法3();

      这种用法:其实再方法1()调用完毕后,是一个对象。

      方法2()调用完毕后,应该放回一个对象。

      方法n()调用完毕后,可能是对象,也可以不是对象。

2、包

  (1)其实就是文件夹

  (2)作用:

    A:区分同名的类

    B:对类进行分类管理

      a:按照功能分

      b:按照模块分

  (3)包的定义:

    package 包名;

    

    多级包用.分开。

  (4)注意事项:

    A:package语句必须在文件中的第一条有效语句。

    B:在一个java文件中,只能由一个package。

    C:如果没有package。默认就是无包名。

  (5)带包的编译和运行

    A:手动式

    B:自动式

      java -d . 类名.java

3、导包

  (1)格式:

    import 包名...类名;

    import 报名...*;

  (2)package,import,class的顺序

      package > import > class

4、权限修饰符

  (1)权限修饰符

            本类    同一个包下    不同包下的子类    不同包下的无关类

   private      Y

   默认       Y      Y  

   protected     Y      Y        Y

   public        Y      Y        Y          Y

5、常见的修饰符

  (1)分类:

    权限修饰符:private,默认,protected,public

    状态修饰符:static,final

    抽象修饰符:abstruct

  (2)常见的类及其组成的修饰

    类:

      默认,public,final,abstruct

      常用的:public

    成员变量:

      private,默认,protected,public,static,final

      常用的:public

  (3)另外比较常见的:

      public static final int 下= 10;

      public static void show() {}

      public final void show() {}

      public abstract void show();

6、内部类

  (1)把类定义在另一个类的内部,该类就被称为内部类。

  (2)内部类的访问规则:

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

    B:外部类想要访问内部类成员,必须创建对象

  (3)内部类的分类

    A:成员内部类

    B:局部内部类

  (4)成员内部类

    A:private为了数据的安全性  

    B:static 为了访问的方便性

    成员内部类不是静态的:

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

    成员内部类是静态的:

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

  (5)成员内部类的面试题(看程序写结果)

      30,20,10

      class 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);

          }

        }

      }

  (6)局部内部类

    A:局部内部类访问局部变量必须加final修饰。

    B:为什么?

      因为局部变量使用完毕就消失,而堆内存的数据并不会立即消失。

      所以,堆内存还是用该变量,而该变量已经没有了。

      为了让该值还存在,就加final修饰。

  (7)匿名内部类  

    A:是局部内部类的简化形式

    B:前提:

      存在一个类或者接口

    C:格式

      new 类名或者接口名() {

        重写方法;

      }

    D:本质

      其实是继承该类或者实现接口的子类内名对象。

  (8)内名内部类在开发中使用

      我们在开发中的时候,会看到抽象类,或者接口作为参数。

      而这个时候,我们知道实际需要的是一个子类对象。

      如果该方法仅仅调用一次,我们就可以使用匿名内部类的格式简化。

      interface Person {

        public abstract void study();

      }

      class PersonDemo {

        public void method(Person p) {

          p.study();

        }

      }

      class PersonTest {

        public static void main(String[] args) {

          PersonDemo pd = new PersonDemo();

          pd.method(new Person() {

            public void study() {

              System.out.println("...");

            }

          });

        }

      }

  (9)匿名内部类的面试题(补全代码)

    interface Inter {

      void show();

    }

    class Outer {

      //补全代码

      public static Inter method() {

        return new Inter() {

          public void show() {

            System.out.println("HellwWorld");

          }

        };

      }

    }

    class OuyerDemo {

      public statc void main(String[] arge) {

        Outer.method().show();    //输出  HelloWorld

      }

    }

猜你喜欢

转载自www.cnblogs.com/buhuiflydepig/p/12368228.html