• javase的一些基础(3)


      抽象类的特点:

                  A:抽象类和抽象方法必须用abstract关键字修饰

                  B:抽象类中不一定有抽象方法,但是有抽象方法的类必须定义为抽象类

                  C:抽象类不能实例化,因为它不是具体的。

                     抽象类有构造方法,但是不能实例化?构造方法的作用是什么呢?

                     用于子类访问父类数据的初始化

                  D:抽象的子类

                         a:如果不想重写抽象方法,该子类是一个抽象类。

                         b:重写所有的抽象方法,这个时候子类是一个具体的类。      

                  E:抽象类的实例化其实是靠具体的子类实现的。是多态的方式。

                         Animal a = new Cat();

      抽象类的成员特点:

                  成员变量:既可以是变量,也可以是常量。

                  构造方法:有。 用于子类访问父类数据的初始化。

                  成员方法:既可以是抽象的,也可以是非抽象的。

                 

           抽象类的成员方法特性:

                  A:抽象方法 强制要求子类做的事情。

                  B:非抽象方法 子类继承的事情,提高代码复用性。

      一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?

             A:可以。

             B:不让创建对象。

      abstract不能和哪些关键字共存?

             private     冲突

             final    冲突      

             static       无意义

      接口的特点:

                  A:接口用关键字interface表示   

                         interface 接口名 {}

                  B:类实现接口用implements表示

                         class 类名 implements 接口名 {}

                  C:接口不能实例化

                         那么,接口如何实例化呢?

                         按照多态的方式来实例化。

                  D:接口的子类

                         a:可以是抽象类。但是意义不大。

                         b:可以是具体类。要重写接口中的所有抽象方法。(推荐方案)

          

           由此可见:

                  A:具体类多态(几乎没有)

                  B:抽象类多态(常用)

                  C:接口多态(最常用)

      接口成员特点

                  成员变量:只能是常量,并且是静态的。

                                默认修饰符:public static final

                                建议:自己手动给出。

                  构造方法:接口没有构造方法。

                  成员方法:只能是抽象方法。

                                默认修饰符:public abstract

                                建议:自己手动给出。

                 

           所有的类都默认继承自一个类:Object。

           类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。

      类与类:

                  继承关系,只能单继承,可以多层继承。

       类与接口:

                  实现关系,可以单实现,也可以多实现。

                  并且还可以在继承一个类的同时实现多个接口。

           接口与接口:

                  继承关系,可以单继承,也可以多继承。

      抽象类和接口的区别:

        A:成员区别

               抽象类:

                      成员变量:可以变量,也可以常量

                      构造方法:有

                      成员方法:可以抽象,也可以非抽象

               接口:

                      成员变量:只可以常量

                      成员方法:只可以抽象

                 

        B:关系区别

               类与类

                      继承,单继承

               类与接口

                      实现,单实现,多实现

               接口与接口

                      继承,单继承,多继承

                 

        C:设计理念区别

               抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。

               接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。

      修饰符:

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

                  状态修饰符:static,final

                  抽象修饰符:abstract

                 

           类:

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

                  状态修饰符:final

                  抽象修饰符:abstract

                 

                  用的最多的就是:public

                 

           成员变量:

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

                  状态修饰符:static,final

                 

                  用的最多的就是:private

                 

           构造方法:

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

                 

                  用的最多的就是:public

                 

           成员方法:

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

                  状态修饰符:static,final

                  抽象修饰符:abstract

                 

                  用的最多的就是:public

                 

           除此以外的组合规则:

                  成员变量:public static final

                  成员方法:public static

                            public abstract

                                  public final

      权限修饰符

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

                  private            Y

                  默认                Y            Y

                  protected        Y            Y                   Y

                  public              Y            Y                   Y                          Y

      内部的访问特点:

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

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

      内部类位置

                  成员位置:在成员位置定义的类,被称为成员内部类。  

                  局部位置:在局部位置定义的类,被称为局部内部类。

      成员内部类:

                  如何直接访问内部类的成员。

                  外部类名.内部类名 对象名 = 外部类对象.内部类对象;

                  Outer.Inner oi = new Outer().new Inner();

      局部内部类

                  A:可以直接访问外部类的成员

                  B:在局部位置,可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能

          

           面试题:

                  局部内部类访问局部变量的注意事项?

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

                  B:为什么呢?

                         局部变量是随着方法的调用而调用,随着调用完毕而消失。

                         而堆内存的内容并不会立即消失。所以,我们加final修饰。

                         加入final修饰后,这个变量就成了常量。既然是常量。你消失了。

                         我在内存中存储的是数据20,所以,我还是有数据在使用。

  • 相关阅读:
    Winget
    全部所学知识
    重装系统
    srs更改端口号导致webrtc播放异常
    .NET性能优化方面的总结(转)
    从自动变换页面背景CSS改写成变换背景图
    网页级在线性能网站测试介绍
    ASP.NET服务器端控件学习(一)
    Nginx源码分析内存池
    使用Memcached提高.NET应用程序的性能
  • 原文地址:https://www.cnblogs.com/lenbore/p/4751125.html
Copyright © 2020-2023  润新知