继承是:多个类有重复内容,把重复内容放到一个新类中,就可以通过extends关键词去让原来的类和新类产生继承关系,子类只能拿到父类一部分信息。通过extends关键词去指明类与类之间的关系,一个父类可以有多个子类,一个子类只能有一个父类即单继承

首先我们会有一种情况我们定义几个类但是这几个类内容相似有重复,比如下列代码中的age,name,job

public class Public {public static void main(String[] args) {}}//endclassclass girl{int age;String name;String job;public void Can_PlayFootball() {
        System.out.println("我是女生但是能踢足球");}
}
class Boy{int age;String name;String job;public void Can_PlayGame(){System.out.println("我是男生打游戏");}}

这个时候我们就想用一个公有类存放类都有属性代码修改如下

public class Public {public static void main(String[] args) {}}//endclass
class Person{int age;String name;String job;
}
class girl extends Person{public void Can_PlayFootball(){System.out.println("我是女生但是能踢足球");}
}
class Boy extends Person{int age;String name;String job;public void Can_PlayGame(){System.out.println("我是男生打游戏");}}

此时Person就是基类 或者父类和超类   Boy和Girl就是子类也叫派生类

继承的注意点

1.方法的重写:当子类和父类的方法签名一样的方法,运行的就是子类的方法

方法重写原则---两等两小一大 :1.父类的方法的方法签名和子类的方法的方法签名要一致

2.如果父类的方法返回值数据类型是基本类型/void,子类要和父类一致

3.如果父类的方法返回的是引用类型,那么子类的方法返回值要么和父类一致要么是其子类。

4.子类抛出编译时异常小于等于父类方法抛出的编译时异常,子类方法可以抛出很多的异常,只要不超过父类方法的异常就好,以父类最大范围的异常为基准,不看个数只看异常,而运行时异常不影响我们的重写

5.访问权限修饰符 子类的方法的访问修饰符范围要大于等于父类 的方法

如果父类的方法用private 修饰,这个方法就是私有的,对子类不可见,子类继承不到

父类构造方法子类也是继承不到,构造代码块也是一样

如果父类的方法用protected修饰的,子类对象要在当前子类的本类中去使用,调用方法。

super关键词--代表父类对象的引用  super() 语句也要放在首行 和this()语句一样,所以this()语句和super语句两者不能显示的同时出现 ,可以一同出现的时候是在构造函数第一行写this(),所有的子类的构造方法默认调用父类的无参构造方法 。默认有super()语句。两者同时存在了。如果父类没有默认的构造方法,子类所有的构造方法需要通过super语句去调用对应形式的父类构造。

调用父类的方法的时候 如果是非静态的方法需要由对象调用 那么就可以是super.sleep();调用父类的sleep()方法。

那么这时候就有一个问题 父类对象和子类对象谁现出现?

子类对象的产生是调用子类的构造方法,如果类中没有构造方法,就会默认添加一个无参构造。

子类的构造方法默认含有一个调用父类构造的语句 super(); 然后调用父类的构造方法,产生父类的对象

如果父类提供了有参构造函数,无参构造函数没有了,那么子类所有的构造方法都要去调用其他形式的父类构造方法

class Person{public Person(int age) {}int age;String name;String job;
}
class girl extends Person{public girl() {super(10);}}
class Boy extends Person{public Boy() {super(10);}

因此父类对象一定比子类对象先创建

那么父类和子类谁先出现的呢

这个要分两个方面 1.思想层面:父类是提取子类的公有特征组成的一个类,这么看的话应该是先有多个子类从而根据公有特征得到父类。

2.代码层面: 子类对象再创建的时候会优先创建父类构造方法,所以应该是父类先出现

从不同的层面来讲有不同的结果,所以面试的时候最好都讲到。

转载于:https://www.cnblogs.com/xuwangqi/p/11083559.html

20面向对象三特征 之继承 方法重写 super相关推荐

  1. Java Part1 Day11继承 方法重写 super多态

    面向对象 一.内容回顾 封装;将类内部的属性隐藏private在类的内部,通过对外的公共接口(public setxxx getxxx)去操作,切薄数据的安全(合理) 实现过程:1属性私有 2封装方法 ...

  2. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  3. Java 面向对象编程(三)——多态,方法重写,向上转型,向下转型

    所谓多态,就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪 ...

  4. 面向对象三大特征之继承(extends)——Java笔记(六)

    继承: 从一般到特殊的关系,是一种拓展关系,子类对象是父类的一种,也可称为"is a"的关系 泛化: 把子类里的共性抽取到父类里的来的过程 特化: 子类在父类的基础上上定义了自己特 ...

  5. 一、Java面试基础之面向对象的特征:继承、封装和多态(原创实例)

    #一.继承 ***1.概念:***继承是类与类的一种关系,是一种"is a"的关系.比如"狗"继承"动物",这里动物类是狗类的父类或者基类, ...

  6. Objective-c 类的继承 方法重写 方法重载

    一.类的继承 Objective-c中类的继承与C++类似,不同的是Objective-c不支持多重继承,一个类只能有一个父类,单继承使Objective-c的继承关系很简单,易于管理程序. Obje ...

  7. [转载] JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍

    参考链接: 可以重写Java中的私有方法吗 JAVA面向对象之代码块与继承 代码块分类 局部代码块 作用:限制变量生命周期 书写位置:在方法中 构造代码块 开发中很少使用 书写位置:类中  方法外 调 ...

  8. [C++程序语言设计笔记一]面向对象编程抽象,继承,重写基本介绍

    今天是个不错的日子,不仅有人收了我做徒弟从此传授我有关C++的一些知识,由于前一段时间喜欢上了外挂的研究也用到了一些MFC的知识及一些Windows APIs编程,但是对C++还是没有从根本上认识.我 ...

  9. Python——面向对象三特征

    1.初识继承 什么是继承? --继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类. 子类会"遗传"父类的 ...

最新文章

  1. BZOJ-1800 飞行棋 数学+乱搞
  2. 计算机无法查找新硬件,电脑弹出新硬件向导怎么办_win7开机显示找到新的硬件向导的解决方法...
  3. DRF_APIView之认证、授权配置
  4. java第三章:流程控制语句
  5. Google Drive客户端
  6. Optaplanner终于支持多线程并行运行 - Multithreaded incremental solving
  7. 图Graph--最小生成树
  8. 基本数据类型的成员变量放在jvm的哪块内存区域里?
  9. GitHub#java#:设计模式
  10. Java集合(一、HashMap)
  11. IOS网络请求的一些需要记录的info设置
  12. JSON --- JAVA 使用方法
  13. AI人机对战五子棋游戏【Python(pygame)+AI】并实现软件输出
  14. JAVA中无法加载主类什么意思_找不到或无法加载主类什么意思?
  15. LinkedList源码浅析
  16. ios 字符加密问题 字符串加密gyb字符返回空
  17. Java实现 LeetCode 321 拼接最大数
  18. 芯片行业常用的英文术语及其含义
  19. Chapter2 ROS通信机制----基础篇(Ⅰ)vs配置及通信基础
  20. QSlider美化规则

热门文章

  1. 建设自己拥有的B2C网站一般需要什么样的插件以及大体花费
  2. linux脚本调用db2存储过程,LINUX定时执行含有DB2存储过程的SHELL脚本
  3. 我乃平常客,本持平常心| 2021 年中总结
  4. PHP32向右位移2位是多少,PHP的二进制位移操作
  5. 云计算成了“晕技术”就对了
  6. 分数等级_山东新高考:quot;6选3quot;等级考分数是怎么换算出来的
  7. 自定义notebook扩展插件_win10下jupyter notebook扩展插件安装失败
  8. 2019-09-30
  9. MPLS(多协议标记交换)协议能否降低跨省组建企业专网的成本?
  10. ArcGIS制图表达Representation-符号制作