一、继承: 涉及关键字: extends(继承) super final abstract

    特点: 1、类与类之间可以用 XX是XX来描述 , 那么他们之间就存在继承关系。
        2、Java中不支持多继承: 以免发生继承的同名方法冲突。
        3、Java支持多层继承。(也就是存在继承体系,要学会如何使用一个继承体系的功能。)

    描述: 当A 类 继承与B 类的时候 代码为: class A extends B {}
              class S extends B implements interface1 ,interface {}

    优点: 1、提高了代码的复用性。
        2、让类与类之间产生关系, 有了这个关系, 才有了多态的出现。

    注意:如果类与类之间没有所属关系,就不要为了获得其他类的成员而强行定义继承关系。

二、对继承体系的使用方法

    1、要想使用一个继承体系,就应该先去查阅这个父类的描述, 因为这个父类中定义的是所有子类的共性成员和功能。
  通过对父类中这些功能的了解,就可以知道子类所继承的功能的特点。

    2、在具体使用时, 应当创建最子类的对象 原因是:
      1)、有可能父类不能创建对象(如被abstract 修饰的类, 也就是 抽象类) 。
      2)、对于子类的对象,可以使用更多的功能, 也可以被父类的引用指向。
  即:查阅父类功能,创建子类对象使用这些功能。

三、其他关系:
    聚合: has a
      聚集:球队与队员
      组合:人与手脚

四、子父类中变量的特点:

    当子类中出现了与父类中同名的成员变量时,我们使用 this关键字访问 子类的成员变量。
                        我们使用 super关键字访问 父类的成员变量。

    而此时,如果是父类引用指向的此子类对象的话, 通过对象名直接访问的此同名变量是父类的变量。
                                                  (这个就叫做 静态引用)

五、子父类中函数的特点(重写):

    当子类中出现和父类一模一样的非静态函数时,此时我们子类对象调用该函数时(无论是什么引用指向它),会调用子类的函数。
      这个就是函数(方法)的另一个特点: 重写。
     注:重写的方法的权限不能小于父类的权限。

    此时子类对象无论是被父类引用还是被子类引用,我们调用这个函数时, 都是调用的子类的函数。
                                            (这个就叫做 多态 动态绑定 迟绑定)

六、子父类中构造函数的特点:

    当对子类对象进行初始化的时候,父类的构造函数也会运行,因为jvm会在子类的构造函数的第一行有一条加上一条语句: super();
  super();会访问父类的空参构造函数。

    如果要访问指定的父类的构造函数,手动的使用super(实参);进行访问。   而且 super(实参);语句也要写在子类构造函数的第一行。

  总结子类的实例化过程:
            当子类的构造函数中没有super();语句时,会在构造函数第一句自动加上super();
            当父类中没有空参构造函数时,必须手动的使用super()语句进行指定的父类构造函数访问。

    同时,子类的构造函数第一句也可以手动的使用this语句来指定访问子类的其他构造函数,而子类所有的构造函数中必须都能直接访问或者互

  相找到访问父类的构造函数的接口。
    而且,子类中的每个构造如果出现了this() 语句,就不能出现super()语句。

七、final关键字
    作用: 修饰符, 用于修饰类、 函数、 变量。

    1、被final修饰的类不能被继承。
      (避免被继承,被子类复写功能)
    2、被final修饰的函数不能被重写。
      (当类被继承后,保证父类中有的方法不能被更改时)

    3、被final修饰的变量的值不能被更改,既可以修饰成员变量、也可以修饰局部变量。
      (就是说一旦被初始化就不能被更改)

          作用:   在我们描述事物时,有的数据出现是固定的,但是我们为了提高阅读性,
             就会给这个数据定义一个变量名。  for exanple 定义pai = 3.14125

    注:可以见得以上就是为一个常量命名, 在为常量命名时,要求所有字母使用大写,单词之间用_连接
      所以 上列为: PAI = 3.14125  。 又如 动物腿数: final int LEG_NUM = 4;

    注: 与static不冲突。

八、abstract 关键字
    特点:
    1、抽象方法必须被放在抽象类中。

    2、抽象类和抽象方法要被 abstract 修饰。

    3、抽象类不能被 new 关键字创建对象, 因为抽象方法调用没有意义。

    4、抽象类中的抽象方法要被调用,必须要被子类对象将抽象方法全部重写过后,建立子类对象调用。
  如果只是覆盖了部分方法,那这还是个抽象类。

    注: 抽象方法要放在抽象类中, 但是抽象类中不是一定要有抽象方法(这样的话,就是不要该类建立对象)

    作用:
      1、给子类限定方法,强制子类实现这些功能。

九、动态绑定和静态绑定的测试

    在父类中定义一个静态属性,静态方法,非静态属性,非静态方法,    在一个继承与其的子类中全部重写(就是重新定义它们),

在测试类中创建一个子类对象,输出四个属性,  之后以一个父类引用指向对象,输出四个属性。

    通过测试法现: 只有非静态方法拥有多态、动态绑定、迟绑定。

            而其他的都是静态绑定。

代码:

class Futher
{
  static String jtsx = "父类的静态属性";
  static void pr()
  {
    System.out.println("父类的静态方法");
  }

  String sx = "父类的属性";
  void prr()
  {
    System.out.println("父类的方法");
  }
}

class Son extends Futher
{
  static String jtsx = "子类的静态属性";
  static void pr()
  {
    System.out.println("子类的静态方法");
  }

  String sx ="子类的属性";
  void prr()
  {
    System.out.println("子类的方法");
  }
}

public class TestExtends
{
  public static void main(String []args)
  {
    Son s = new Son();
    s.pr();
    s.prr();
    System.out.println(s.jtsx);
    System.out.println(s.sx);

    Futher f = s;
    f.pr();
    f.prr();
    System.out.println(f.jtsx);
    System.out.println(f.sx);

  }
}

运行结果:

 

关于继承的基本知识,方法重写,final和abstract的使用, 动态绑定和静态绑定的知识的更多相关文章

  1. 包、继承、Super、方法重写

    1 包_继承 1.1 包 包(package) 用于管理程序中的类,主要用于解决类的同名问题.包可以看出目录. 包的作用 [1] 防止命名冲突. [2] 允许类组成一个单元(模块),便于管理和维护 [ ...

  2. static ,final 、abstract的作用,以及它们的联系和区别

    static可以修饰变量,修饰的变量直接属于某各类,不局限于某个方法,无法在成员方法中修饰变量,也不可以在静态方法中修饰变量.被static修饰的方法属于静态方法(类方法),与对象无关,与类有关.fi ...

  3. 继承extends、super、this、方法重写overiding、final、代码块_DAY08

    1:Math类的随机数(掌握) 类名调用静态方法.  包:java.lang 类:Math 方法:public static double random(): Java.lang包下的类是不用导包就可 ...

  4. 乐字节Java继承|方法重写、super和final关键字

    大家好,乐字节的小乐又来了,上一篇是:乐字节Java|JavaBean.继承与权限修饰,也是属于Java继承的,今天继续Java继承. 一. 方法的重写 父类不满足子类的要求,按需改写.注意 方法签名 ...

  5. Java中实例方法,实例变量,静态方法,静态变量,final方法重写的问题,覆盖

    Java中只有非私有的实例方法能被重写,即实现多态,子类可以覆盖父类的方法,但是实例变量不能覆盖,若子类和父类均定义了同样名称的变量,则对于子类来说这是两个不同的变量,要想调用父类的变量必须显示去调用 ...

  6. java的方法重写 ,多态和关键字 instanceof和final

    package cn.pen; /*final 是一个java的关键字,用于修饰局部变量.属性.方法.类,表示最终的意思. final修饰类表示最终类,无法被继承.public final class ...

  7. 代码块、继承、this、super、final(java基础知识八)

    1.代码块的概述和分类 * A:代码块概述 * 在Java中,使用{}括起来的代码被称为代码块.* B:代码块分类 * 根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块( ...

  8. 【Java基础 项目实例--Bank项目5】Account 和 customer 对象等 继承、多态、方法的重写

    延续 Java基础 项目实例--Bank项目4 实验要求 实验题目 5: 在银行项目中创建 Account 的两个子类:SavingAccount 和 CheckingAccount 实验目的: 继承 ...

  9. Java基础进阶:继承重点摘要,继承详解,方法重写注意事项,方法重载与重写的区别,抽象类,代码块, 附重难点,代码实现源码,课堂笔记,课后扩展及答案

    继承重点摘要 *继承的特点: 子类在初始化之前,一定要先完成父类数据的初始化 子类在初始化之前,一定要先访问父类构造,完成父类数据的初始化 系统在每一个构造方法中默认隐藏了一句super(); 如果我 ...

随机推荐

  1. centos7优化启动项,关闭一些不必要开启的服务

    CentOS7已不再使用chkconfig 管理启动项 使用 systemctl list-unit-files 可以查看启动项 systemctl list-unit-files | grep en ...

  2. Windows 7 quick launch

    %AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar %AppData%\Microsoft\Internet ...

  3. EFI Windows 7 activition

    mountvol X: /s copy SLIC.aml X:\EFI\CLOVER\ACPI\WINDOWS BOOTICE X:\EFI\CLOVER\CLOVERX64.efi slmgr -i ...

  4. 官网下载旧版本jdk,老版本jdk,jdk1.7,jdk1.8

    1.进入中文oracle官网(不是国内官网下载速度超级慢): http://www.oracle.com/technetwork/cn/indexes/downloads/index.html 2.进 ...

  5. mpi4python

    转载:https://zhuanlan.zhihu.com/p/25332041 前言 在高性能计算的项目中我们通常都会使用效率更高的编译型的语言例如C.C++.Fortran等,但是由于Python ...

  6. c++创建文件夹以及子文件夹

    #ifdef WIN32 #include <io.h> #include <direct.h> #else #include <unistd.h> #includ ...

  7. Sublime Text ——3200破解补丁

    声明 该资源来源于网络,只为学习交流使用,侵权联系删除.长期使用和觉得sublime text 不错的话,还望购买授权码,多多支持正版!!! 重要的事情说三遍 请支持正版!!! 请支持正版!!! 请支 ...

  8. 第四十天 并发编程之io模型

    一.今日内容 1.网络IO的两个阶段 waitdata copydata 2阻塞IO模型 之前写的都是阻塞 无论多线程 多进程 还是 进程池 线程池 3.非阻塞IO模型 在非阻塞IO中 需要不断循环询 ...

  9. 读取CSV到DataTable

    using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using Sy ...

  10. visual studio 显示引用关系 作者更改项

    visual studio 2017中,每个类或者方法顶部会显示此方法的引用关系或者作者更改项:这个功能极大了提高了我们代码的定位效率:不过有时候却发现每一行代码都有,会增加我们屏幕显示内容,有时候看 ...