1.继承(inheritance):Java是单继承的,意味着一个类只能从另一个类继承(被继承的类叫做父类也叫【基类 baseclass】),继承的类叫做子类,java中的继承使用extends关键字。

public class Child  extends Parent{
public Child(){
System.out.println("child");
}
public static void main(String[] args){
Child child = new Child();
}
}
public class Parent {

    public Parent(){
System.out.println("Parent");
}
}

输出结果:

Parent
child

分析:

如果将父类的构造方法加了参数int i,这样子类不变的话会编译不通过,可以在子类构造方法中加super(1)

 

2.当生成子类对象时,java默认首先调用父类的不带参数的构造方法,然后执行该构造方法,生成父类的对象,接下来再去调用子类的构造方法。

【要想生成子类的对象,首先需要生成父类的对象,没有父类对象就没有子类对象,比如说:没有父亲就没有孩子】

3.super关键字:super表示对父类对象的引用。

4.如果子类使用super()显示调用父类的某个构造方法,那么在执行的时候就会寻找与super()所对应的构造方法而不会再去寻找父类的不需参数的构造方法。

与this一样,super也必须要作为构造方法的第一条执行语句,前面不能有其他可执行语句。

5.关于继承的3个特点

1)父类有的,子类也有

2)父类没有,子类可以增加

3)父类有的,子类可以改变

如下所示,是属性的继承演示

public class InheritenceTest {
public static void main(String[] args) {
Apple apple = new Apple();
String s = apple.name;
System.out.println(s);
}
}
public class Apple  extends Fruit{
String name = "apple";
}

public class Fruit {
String name = "fruit";
}

结果是:apple,如果Apple里没有写String name= "apple",就打印fruit

 

6.关于继承的注意事项

a)构造方法不能被继承

b)方法和属性可以被继承

c)子类的构造方法隐式地调用父类的不带参数的构造方法

d)当父类没有不带参数的构造方法时,子类需要使用super来显示地调用父类的构造方法,super指的是对父类的引用

e)supper关键字必须是构造方法中的第一行语句。

7.方法重写(Override):又叫做覆写,子类与父类的方法返回类型一样,方法名称一样,参数一样,这样我们说子类与父类的方法构成了重写关系。

8.方法重写与方法重载之间的关系:重载发生在同一个类内部的两个或多个方法,重写发生在父类与子类之间

9.当两个方法形成重写关系时,可以在子类方法中通过super.run()形成调用父类的run()方法,其中super.run()不必放在第一行语句,因为此时父类对象已经构造完毕,先调用父类的run()方法还是先调用子类的run方法是根据程序的逻辑决定的。

10.在定义一个类的时候,如果没有显式指定该类的父类,那么该类就会继承于java.lang.Object类(JDK提供的一个类,Object类是java所有类的直接或间接的父类)

Java SE 第十六讲----面向对象特征之继承的更多相关文章

  1. Java SE 第十六讲----面向对象特征之多态

    1.多态:polymorphism:我们说的子类就是父类(玫瑰是花,男子是人),因此多态的意思就是:父类型的引用可以指向子类的对象 public class PolyTest { public sta ...

  2. Java SE 第十六讲----方法重载

    1.方法重载(Overload):表示两个或多个方法名字相同,但方法参数不同 不同:1)参数个数不同: 2)参数类型不同: 注意:方法的返回值对重载没有任何影响 2.构造方法重载,只需看参数即可.如果 ...

  3. Java SE 第二十四讲----static与final使用陷阱关键字

    1.对于final类型成员变量,一般来说有两种赋值方式: a)在声明final类型的成员变量时就附上初值 package com.cl.staticandfinal; public class Fin ...

  4. Java SE 第二十二讲----接口interface

    1.接口:interface:接口的地位等同于class,接口中的所有方法都是抽象方法.在声明接口中的方法的时候,可以使用abstract关键字也可以不使用.通常情况下,都会省略掉abstract关键 ...

  5. Py修行路 python基础 (十六)面向对象编程的 继承 多态与多态性 封装

    一.继承顺序: 多继承情况下,有两种方式:深度优先和广度优先 1.py3/py2 新式类的继承:在查找属性时遵循:广度优先 继承顺序是多条分支,按照从左往右的顺序,进行一步一步查找,一个分支走完会走另 ...

  6. 201871010106-丁宣元 《面向对象程序设计(java)》第十六周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第十六周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...

  7. Java进阶(三十六)深入理解Java的接口和抽象类

    Java进阶(三十六)深入理解Java的接口和抽象类 前言 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太 ...

  8. JAVA之旅(二十六)——装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片

    JAVA之旅(二十六)--装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片 一.装饰设计模式 其实我们自定义re ...

  9. “全栈2019”Java多线程第二十六章:同步方法生产者与消费者线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

随机推荐

  1. unity, 取消ugui button响应键盘

    http://answers.unity3d.com/questions/859460/button-is-being-triggered-by-spacebar-after-clicke.html

  2. sql常用语句--转载

    一.基础 .说明:创建数据库 CREATE DATABASE database-name .说明:删除数据库 drop database dbname .说明:备份sql server --- 创建 ...

  3. linux ubuntu系统下,adb不是内部命令 (如何才能让adb命令可以使用)

    linux ubuntu系统下,adb不是内部命令 原文地址 linux ubuntu系统下,adb不是内部命令 解决方法: 1.sudo gedit ~/.bashrc 2.将下面的两句加到上面打开 ...

  4. javascript 与和非

    || :  在javascript中,返回第一个真值,除非都是假值返回最后一个值(也是假值). 1 || 0; 0 || 1; 0 || 0; 0 || undefined; // undefined ...

  5. C++资料大全

    本文内容源自GitHub<Awesome C/C++>. 关于 C++ 框架.库和资源的一些汇总列表,由 fffaraz 发起和维护. 内容包括:标准库.Web应用框架.人工智能.数据库. ...

  6. jquery中关于append()的用法笔记---append()节点移动与复制之说

    jquery中关于append()的用法笔记---append()节点移动与复制之说 今天看一本关于jquery的基础教程,看到其中一段代码关于append()的一行,总是百思不得其解.于是查了查官方 ...

  7. IsolatedStorageException for Silverlight Application

    if you are using the IsolatedStorage for application configuration storage, and when you get the Iso ...

  8. 不包含适合于入口点的静态"Main"方法

    学习新建项目.此问题做为笔记. 错误 1 程序“admin.exe”不包含适合于入口点的静态“Main”方法 原因:原来创建项目的时候,用的是“空项目”,我以为这样就会生成类库,实际上,一开始准备运行 ...

  9. LitDB文章

    阅读目录 1.LiteDB初步介绍 2.LiteDB使用基本案例 3.LiteDB的技术细节 4.资源其他 今天给大家介绍一个不错的小巧轻量级的NoSQL文件数据库LiteDB.本博客在2013年也介 ...

  10. Avant Browser

    Avant Browser Avant 浏览器友好的用户界面为你的网络冲浪带来全新的效率和透明性.软件版本的不断升级使产品的可靠性稳步提高. 没有广告.没有恶意软件! Avant 浏览器是免费的.10 ...