一、继承

1.class:编程语言中的基本单位。将数据和功能封装到了一起。使用类来对同一类型的对象建模。

2.父类(superclass)包含其所有子类(subclass)共享的数据域和方法。即子类继承了父类的数据域和方法。同时子类也可以添加新的数据域和方法。

3.可以创建一个父类来表示系统中某些对象的核心概念,从父类中导出其他类型,来表示此核心可以被实现的各种不同方式。

4.父类的private成员子类不可访问。私有数据域可以通过父类的公共的访问器(getName())/修改器(setName())来访问和修改它们。

5.子类复制了父类的接口,所以所有可以发送给父类对象的消息同时也可以发送给子类对象。子类与父类具有相同的类型。

6.两种方法可以让父类与子类产生差异:

1)直接在子类中添加新方法;

2)改变现有父类的方法的行为--覆盖(overiding)基类的方法。

7.is-a与is-like-a:

 1)is-a:子类与父类具有完全相同的接口,即子类与父类是完全相同的类型。如:一个圆 is a 几何图形。判断是否是继承,就要确定是否可以用is-a来描述类之间的关系,并使之具有实际意义。

2)is-like-a:子类中添加了新的接口元素,即扩展了接口,父类无法访问新添加的方法。此时导出类is like a 基类。

8.Java不允许多重继承。一个java类只可能直接继承自一个父类--单一继承(single inheritance)。多重继承可以通过接口实现。

二、super的作用

  1.调用父类的构造方法

    super()/super(parameters) 必须出现在子类构造方法的第一行,这是显式调用父类构造方法的唯一方式。因为在子类中调用父类构造方法的名字会引起一个语法错误。构造方法可以用来构造一个类的实例,不像属性和方法,父类的构造方法是不被子类继承的,它们只能从子类的构造方法中用super调用。

    注:构造方法链(constructor chaining):在任何情况下,构造一个类的实例时,将会调用沿着继承链的所有父类的构造方法。当构造一个子类的对象时,子类构造方法会在完成自己的任务之前,首先调用它的父类的构造方法。如果父类继承自其他类,那么父类构造方法又会在完成自己的任务之前,调用它的父类的构造方法。这个过程持续到沿着这个继承体系机构的最后一个构造方法被调用为止。

    public class Apple extends Fruit{}

    class Fruit{

      public Fruit(String name){

      ........

      }

    }

    Apple中没有显式定义的构造方法,因此Apple的默认无参构造方法被隐式调用。又Apple是Fruit的子类,是所以Apple的默认构造方法会自动调用Fruit的无参构造方法。而Fruit没有无参构造方法,因为Fruit显式地定义了构造方法。因此程序不能编译。最好能为每个类提供一个无参构造方法(如果需要),以便于对该类进行扩展同时避免错误。

  2.调用父类的方法

    super.方法名(参数)

    (父类方法被覆盖的情况下需用super调用父类方法,未被覆盖的情况下不需要加super因为父类的方法已经被子类继承了)

三、覆盖方法(method overriding)

  1.子类从父类中继承方法,有时,子类需用修改父类中定义的方法的实现,这称作方法覆盖。

  2.super.super.....方法名()是一个语法错误,只能super.方法名()

  3.仅当实例方法是可访问时,它才能被覆盖。父类的私有方法不能被覆盖。如果子类中定义的方法和父类中的私有方法同名,那么这两个方法完全没关系。

  4.静态方法可以被继承但是不可以被覆盖。如果父类中的静态方法被子类重写定义,那么定义在父类中的静态方法将被隐藏,可用父类名.静态方法调用隐藏的静态方法。

四、对象类Object

  1.Java中的每个类都源于java.lang.Object类。熟悉Object类提供的方法很重要。这样就可以在自己的类中使用它们。

  2.toString()方法:返回所属类名@该对象十六进制形式的内存地址

  3.equals()方法:使用==检测两个引用变量是否指向同一个对象。覆盖equals方法的格式固定为equals(Object obj)

五、多态(polymorphism)

  1.使用父类对象的地方都可以使用子类的对象,这就是多态。多态意味着父类型的变量可以引用子类型的对象。

六、动态绑定

  1.动态绑定工作机制:假设对象o是类C1,C2,...,Cn-1,Cn的实例。其中C1是C2的子类,...Cn-1是Cn的子类。如果o调用一个方法p,那么java虚拟机会依次在类C1,C2...Cn中查找方法p的实现,知道找到为止。一旦找到一个实现就停止查找然后调用这个第一次找到的实现。

七、final

  使用final修饰符表明一个类是终极的,是不能作为父类的。使用final修饰的方法是不能被子类覆盖的。使用final修饰的方法内的变量就是常量。

转载于:https://www.cnblogs.com/yzjisme/p/6632161.html

JAVA基础--继承(inheritance)相关推荐

  1. 黑马程序员——Java基础---继承,抽象,多态,接口,包,内部类

    -----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 一.继承 (一)继承概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个 ...

  2. 黑马程序员——Java基础——继承

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  3. java 基础---继承

    继承 一,概述 a)         使用extends关键字可以让一个类继承另一个类,继承的类为子类,被继承的类是父类,子类会自动继承父类的所有方法和属性. b)        继承使得类和类之间产 ...

  4. (2)java基础继承

    定义类Human,具有若干属性和功能:定义其子类Man.Woman: 在主类Test中分别创建子类.父类和上转型对象,并测试其特性. Human: package eryi;public class ...

  5. Java基础---继承详解--this/supper---方法的重写与重载

    继承 语法:子类 extends 父类 java中如果要定义两个类的继承关系,一定要满足里氏代换原则. 子类:用于继承的类,也称为派生类 父类:被继承的类,也称为超类.基类 特点:1.子类可以拥有父类 ...

  6. Java基础---继承

    继承的基本作用是:代码的复用.默认所有的类都继承与Object类 一.概念: 继承是java面向对象编程的基石,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父 ...

  7. 10.java基础----继承、抽象类- 编程

    命名要求:1. 类名,接口名,枚举名,注解名使用大驼峰2. 变量名,方法名,包名均使用小驼峰3. 常量名全大写,多个单词下划线分割4. 名字要见名知意,如果不知道对应的英文,可以使用拼音代替.不可使用 ...

  8. Java基础---继承、抽象、接口

    第一讲    继承 一.概述         继承是面向对象的一个重要特征.当多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可.这时,多 ...

  9. Java基础--继承案例(二)

    /*** 通过类来体现类与类之间的关系:* 1,创建动物类* 2,创建猫类* 3,创建狗类**/ public class InheritDemo {public static void main(S ...

最新文章

  1. 从这篇YouTube论文,剖析强化学习在工业级场景推荐系统中的应用
  2. PHP curl_setopt函数用法介绍中篇
  3. 【深度学习框架】Tensorflow Session.run()函数的进一步理解
  4. 摩托罗拉linux专属游戏,摩托罗拉E680g Linux系统手机也可以玩游戏
  5. 写了一个对象集合排序的类
  6. mac文件修改权限设置
  7. 如何高效和快乐的学习RS和GIS知识
  8. kafka传递文件_是否可以使用Kafka传输文件?
  9. html5圆形图片自动旋转,纯CSS3圆形图片鼠标滑过旋转翻盖动画特效
  10. 什么是MAC多播地址
  11. 大一计算机考试题库打字题,大一计算机考试题库
  12. LeCo-88.合并两个有序数组
  13. SDHC 存储卡会导致刷机模式不被识别
  14. 字典(JSON)数据写入文件并换行,Python
  15. NOIP切题注意事项
  16. python 背景音乐程序代码_python中加背景音乐如何操作
  17. One-hot的使用
  18. vue js 进来页面自动播放背景音乐
  19. MATLAB--数字图像处理 计算图像链码及其相似多边形
  20. [附源码]计算机毕业设计Python+uniapp驾校预约练车的小程序v5fxm(程序+lw+远程部署)

热门文章

  1. pycharm自定义代码片段
  2. mysql 中文字符 函数_MySQL基础之字符函数-Go语言中文社区
  3. java random.nextbyte_java.util.Random.next()方法实例
  4. linux 文件安装大全,linux 文件包安装大全
  5. inno setup安装之前关闭mysql_innosetup安装之前关闭进程
  6. xml格式的word转为标准格式_保持的怎么保证Word格式不变?4个技巧需要带走
  7. java中将查询数据导出_如何在R中将数据框导出到Excel
  8. 计算器的二进制功能java_Java二进制文字– Java 7功能
  9. 二叉树遍历结果推二叉树_二叉树遍历(PreOrder,InOrder,PostOrder)
  10. 用python画熊猫_熊猫read_excel()–用Python读取Excel文件