/* 这个是github上面的连接地址*/

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: 静态当中只能访问静态成员(方法,对象).

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

    没有, 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: 子类不能重写父类中私有的方法.

 

posted @ 2019-09-25 21:14  李海龙  阅读(537)  评论(0编辑  收藏  举报