zoukankan      html  css  js  c++  java
  • Java基础之 接口、抽象类、构造方法、setXxx,getXxx、静态变量和成员变量、代码块、this和super的区别、final关键字、重写与重载

    接口:

    1). 什么是接口?

      接口是对外暴露的规则.

    2). 如何定义接口?

      使用关键字 interface 接口名{}

    3). 接口与类的关系?

      实现关系, 可以单实现, 也可以多实现, 但是多个接口名之间, 需要用逗号进行分隔.


      使用关键字: implements

        class 实现类 implements 接口名{

      }


    4). 接口是否可以实例化?

      不可以实例化, 因为内部含有抽象方法.

    抽象类:

    1). 什么是抽象类?

      把像的部分和相似的部分抽取到一个父类当中, 抽象类就是一个特殊的父类.

      这个特殊的父类和普通的父类,区别就在于, 抽象类当中可以定义抽象方法.

    2). 如何定义抽象类和抽象方法?

      通过abstract关键字

      类: abstract class 类名{}

      方法: public abstract 返回值类型 方法名();

    3). 抽象类是否可以创建对象?

      不可以, 如果允许的话, 就代表可以调用没有方法体的抽象方法, 这样做没有任何意义.

    4). 抽象类的子类?

      1. 重写所有的抽象方法 -> 推荐

      2. 将自己本身也变成抽象类


    5). 抽象类的成员特点?

      1. 成员变量

        可以是变量, 也可以是常量

      2. 成员方法

        可以是普通的方法, 也可以是抽象方法

      3. 构造方法

        有, 目的是为了给子类进行初始化的


    总结: 抽象类当中除了可以定义抽象方法之外, 其余的定义跟普通的类没有区别.

    构造方法:

    1). 构造方法的作用?

      用来给对象中的属性进行初始化的.

      一般都会通过有参构造创建对象, 并给属性赋值.

    2). 构造方法的格式?

      A. 方法名要与类名相同, 大小写也要一致
      B. 没有返回值类型连void都没有
      C. 没有具体的返回值

      问题 : 构造方法没有返回值, 可以编写return语句吗?

        可以, 但是return后面不能跟上具体的值.

    3). 构造方法的注意事项?

      如果一个类当中, 没有给出任何构造方法, 那么系统将会默认提供一个空参的构造方法, 但是如果手动给出了有参构造

      系统将不会再提供默认的空参构造

      建议: 今后空参有参都手动给出.

    4).构造方法可以重载吗?

      构造方法也是方法, 所以可以进行重载.

    setXxx与getXxx:

    给成员变量初始化有几种方式?

     答:
      1. 通过有参构造初始化
      2. 通过setXxx方法初始化

    问题: 两种方式有什么区别?

     答案: 一般都是通过有参构造进行(初始化), 再通过setXxx方法(修改)属性值

      两者往往是配合使用的

     静态变量和成员变量

    什么是静态

    答 : 静态指的就是static关键字, static是一个修饰符

    被其修饰的成员有什么特点?


    1). 静态关键字的特点是?
      a: 随着类的加载而加载, 优先于对象存在
      b: 被类的所有对象所共享
      c: 多了一种调用方式, 可以通过类名.进行调用

    2). 静态的好处是?
      a: 调用方便
      b: 节约内存

    3). 静态关键字的注意事项?

      a: 静态当中只能访问静态成员(方法,对象).

      问题: 静态中是否有thissuper关键字? 为什么?

        没有, this代表当前对象的引用, this只有在创建对象之后,才会存在, super也是一样.

        静态存在的时候, 有可能对象没有被创建出来, 所以说静态当中没有this和super.


    08. 静态变量和成员变量的区别?

      1. 所属不同:
        静态变量 : 类
        成员变量 : 对象
      2. 内存位置不同
        静态变量 : 方法区中, 字节码文件的静态区
        成员变量 : 堆内存
      3. 内存出现时间不同
        静态变量 : 随着类的加载而加载
        成员变量 : 随着对象的创建而存在
      4. 调用不同
        静态变量 : 多了一种调用方式, 可以通过类名.进行调用, 也可以通过对象名进行调用
        成员变量 : 只能对象名进行调用

    代码块


    1). 什么是代码块?

         被一对大括号括起来的代码, 就称之为代码块

    2). 代码块的分类?

      1. 局部代码块
        位置: 方法中的一对大括号
        作用: 限定了变量的声明周期, 可以提早的释放内存

      2. 静态代码块

        位置: 类中方法外的一对大括号, 需要加入static修饰
        作用: 一般用于加载驱动, 获得数据库连接
        特点: 随着类的加载而执行, 且只执行一次.

    -----------------------------------------

    3. 构造代码块
    4. 同步代码块

    this和super的区别

    1).this和super的区别

      1). 什么是this关键字?

        this代表当前对象的引用, 谁来调用我, 我就代表谁.

      2).什么是super关键字

        super : 代表的是当前对象父类的引用.

    2). 调用方面有什么区别?

      成员变量:

        this : 可以调用本类的成员变量, 也可以调用父类的成员变量
        前提: 子父类当中没有出现重名的成员变量.
        super : 可以调用父类的成员变量

      成员方法:

        this : 可以调用本类的成员方法, 也可以调用父类的成员方法
        前提: 子父类当中没有出现重名的成员方法.

        super : 可以调用父类的成员方法

      构造方法:

        this() : 调用本类的构造方法

        super() : 调用父类的构造方法


    简单记: this调用的是本类成员, super调用的是父类成员.

    final关键字

    final可以修饰类,方法,变量。

    被修饰的类: final修饰的类不可以被继承。

    被修饰的方法: final修饰的方法不可以被覆盖。

    被修饰的变量: final修饰的变量是一个常量。只能被赋值一次。

     重写和重载

    问题: 重写和重载的区别是?

    重载(Overload)

     在同一个类中, 方法名相同, 参数列表不同, 与返回值无关

    参数列表不同:
      1. 类型不同
      2. 个数不同
      3. 顺序不同(没有意义)

      好处:可以提高代码的阅读性,(见名知意)

       错误误区:在一个类中,方法名相同,参数列表也相同,这不是重载,这叫方法重新定义

    重写(Override)

     子父类当中, 出现了方法声明一模一样的方法, 返回值类型小于等于父类的类型.

    问题: 方法重写有哪些注意事项?

      a: 子类重写父类的方法, 访问权限必须大于等于父类的权限
      b: 子类不能重写父类中私有的方法.

    路漫漫其修远兮,吾将上下而求索
  • 相关阅读:
    使用Autofac动态注入启动Api服务
    RabbitMQ学习笔记(六) RPC
    RabbitMQ学习笔记(五) Topic
    RabbitMQ学习笔记(四) Routing
    RabbitMQ学习笔记(三) 发布与订阅
    Quartz.NET学习笔记(二) Job和JobDetails
    RabbitMQ学习笔记(二) 工作队列
    Spark SQL JSON数据处理
    Hive JSON数据处理的一点探索
    由“Beeline连接HiveServer2后如何使用指定的队列(Yarn)运行Hive SQL语句”引发的一系列思考
  • 原文地址:https://www.cnblogs.com/lihailong/p/11587480.html
Copyright © 2011-2022 走看看