java中的继承extends

知识点1:

this与super

关键字this 有两个用途:一是引用隐式参数;二是调用该类其他的构造器;

关键字super也有两个用途:一是调用超类的方法;二是调用超类的构造器;

二者调用构造器必须都放在第一行;

也就是说由于子类实例化的时候一定会调用父类的构造器(将父类实例化),所以子类中有几个构造函数,父类中就必须有几个构造函数。

注意

抽象类其实是可以实例化的,但是他的实例化方式不是通过new方式来创建对象,而是通过父类的引用来指向子类的实例来间接地实现父类的实例化(因为子类要实例化前,一定会先实例化他的父类。这样创建了继承抽象类的子类的对象,也就把其父类(抽象类)给实例化了).但是:接口是不能被实例化的(接口压根就没有构造函数)。

==========================================================================================

知识点2:

继承相关的基础知识:

一、父类引用指向子类对象时:

                            Fu  fu = new Zi();

  1. 若子类覆盖父类某方法,则调用子类重写后的方法;
  2. 若子类未覆盖父类方法,则调用父类本身的旧方法;
  3. 若子类覆盖某属性,父类引用仍旧调用父类本身的旧属性;
  4. 若子类未覆盖某属性,父类调用本身的旧属性;
  5. 父类引用无法调用子类特有的方法(向上转型了);

二、子类引用指向自身对象时:

                         Zi  zi  = new Zi();

  1. 若子类覆盖父类某方法,则调用子类重写后的方法;
  2. 若子类未覆盖父类方法,则调用父类本身的旧方法;
  3. 若子类覆盖某属性,子类调用覆盖后的新属性;
  4. 若子类未覆盖某属性,子类调用父的属性;
  5. 子类可以调用父类方法和子类特有方法;

三、子类不能重写父类静态方法,抽象类可以定义静态方法;

==========================================================================================

知识点3:

1、方法的名字和参数列表称为方法的签名,返回类型不是签名的一部分;

2、在java SE 5.0以前,要求返回类型必须一样,现在允许子类将覆盖方法的返回值类型定义为原返回类型(父类返回类型)的子类型;

3、父类中private修饰的方法无法被继承,因为子类修饰的权限必须大于父类的;包括父类的私有属性也是无法被子类直接继承的,子类是通过继承父类的set和get方法而间接获取属性值的;

4、父类中的静态方法只能被子类中的静态方法覆盖重写;

==========================================================================================

知识点4:

final关键字:

  1. final修饰的类不可被继承;
  2. final修饰的方法不可被重写,但是可以被子类继承;
  3. final修饰的变量不可以修改(只允许赋值一次);
  4. 全局常量 public static final n = 1;
  5. 将方法或者类声明为final主要鉴于以下原因:确保它们不会在子类中改变语义;

=========================================================================================

知识点5:

抽象类中抽象方法不能有哪些关键字:

1、private:因为private修饰的抽象方法不能被覆盖,属性和非抽象方法可以使用private,只是子类无法继承;

2、static:因为static修饰的抽象方法无法被子类继承,属性和非抽象方法可以使用;

3、final:因为final修饰的抽象方法不能被覆盖,属性和非抽象方法可以使用final;

========================================================================================

知识点6:

static关键字:

1、所有对象共享数据用static修饰;

2、static修饰的成员随着类的建立而出现,优先于对象的存在;

3、static修饰的成员有多种调用方式;

4、成员变量存储在堆内存的对象中,所以叫对象特有数据;静态变量存储在方法区(数据共享区)的静态区中;

5、静态方法中不可以使用this或者super关键字(https://blog.csdn.net/u010479322/article/details/51730275)

你可能感兴趣的:(java基础知识)