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. openjudge-回文串判断【递归】

    回文串判断 总时间限制: 1000ms 内存限制: 65536kB 描述 任意给定一个非空的字符串,判断其是否是回文串.回文串是指正向看和反向看均相等的串,如AbcDcbA和cDDc.如果是回文串,则 ...

  2. Android 常遇错误解决方案

    遇到问题描述: 运行android程序控制台输出 [2012-07-18 16:18:26 - ] The connection to adb is down, and a severe error ...

  3. Reporting Service 报表报 rsReportServerDatabaseError 错的解决方法

    一.打开CRM的报表出现“报表服务器数据库内出错.此错误可能是因连接失败.超时或数据库中磁盘空间不足而导致的. (rsReportServerDatabaseError) 获取联机帮助 对象名 'Re ...

  4. C#动态数组ArrayList和List<T>的比较

    C#中一维动态数组(即列表)分ArrayList和List<T>两种,其容量可随着我们的需要自动进行扩充 一.ArrayList类(少用) ArrayList位于System.Collec ...

  5. mysql 进程状态(转)

    通过show processlist查看MySQL的进程状态,在State列上面的状态有如下这些: Analyzing线程对MyISAM 表的统计信息做分析(例如, ANALYZE TABLE ).c ...

  6. HTML5 javascript修改canvas的大小

    方法1: 设定固定的值,这种方式跟在html中设定canvas的值没有什么区别: window.onload = function(){ canvas.height = 100; canvas.wid ...

  7. Android App启动错误的问题(connection to the server was unsuccessful)

    问题描述: PhoneGap+Sencha Touch开发的应用,打包后的APP或者调试期间,在启动的时候提示如下信息: Application Error - The connection to t ...

  8. 多线程操作(ThreadPool.QueueUserWorkItem

    主线程: private void GetPolicy_Load(object sender, EventArgs e) { ////ThreadPool.QueueUserWorkItem(new ...

  9. web api 500 错误

    改了API 方法内容后,就直接F5运行起来. 客户端用WebClient请求,老是返回500错误. 无意中重新编译了WEIAPI项目,客户端就正常了.

  10. 异常处理:Sys.WebForms.PageRequestManagerParserErrorException:The message……

    如果你为了使页面可以达到局部刷新的效果,并且用了UpdatePanel控件,这是如果你在后台页面用到Response对象时肯呢过会抛出一下异常: 解决方法:$(document).ready(func ...