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

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

public class Public {
public static void main(String[] args) { } }//endclass class 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.代码层面: 子类对象再创建的时候会优先创建父类构造方法,所以应该是父类先出现

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

20面向对象三特征 之继承 方法重写 super的更多相关文章

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

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

  2. 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍

    面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...

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

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

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

    继承:            从一般到特殊的关系,是一种拓展关系,子类对象是父类的一种,也可称为”is a“的关系 泛化:         把子类里的共性抽取到父类里的来的过程 特化:         ...

  5. 05 面向对象:构造方法&static&继承&方法 &final

    构造方法及其重载: /* 构造方法格式特点 * a:方法名与类名相同(大小也要与类名一致) * b:没有返回值类型,连void都没有 * c:没有具体的返回值return; * 构造方法的重载 * 重 ...

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

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

  7. PHP学习笔记5-类的继承/方法重写

    更改Man.php文件名为People.php,加入代码: public function hi(){ return $this->_name.' say hi'; } 新建文件Man.php: ...

  8. Java面向对象系列(9)- 方法重写

    为什么需要重写? 父类的功能,子类不一定需要,或者不一定满足 场景一 重写都是方法的重写,和属性无关 父类的引用指向了子类 用B类新建了A类的对象,把A赋值给了B,这时候B是A,A又继承了B类,向上转 ...

  9. JAVA 面向对象 三大特征:继承

    什么是继承 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接访 ...

随机推荐

  1. easy_install uncompyle6 egg

    localhost:~ # easy_install uncompyle6-3.0.1-py3.6.eggProcessing uncompyle6-3.0.1-py3.6.eggCopying un ...

  2. codeforces 686D D. Kay and Snowflake(dfs)

    题目链接: D. Kay and Snowflake time limit per test 3 seconds memory limit per test 256 megabytes input s ...

  3. 【POJ 1155】TELE

    [题目链接] 点击打开链接 [算法] 树形DP f[i][j]表示以i为根的子树中,选了j个叶子节点,所能带来的最大收益 不难发现这就是一个经典的背包问题,不过是在树上做背包罢了 最后,判断f[1][ ...

  4. 单纯形 BZOJ3112: [Zjoi2013]防守战线

    题面自己上网查. 学了一下单纯形.当然 证明什么的 显然是没去学.不然估计就要残废了 上学期已经了解了 什么叫标准型. 听起来高大上 其实没什么 就是加入好多松弛变量+各种*(-1),使得最后成为一般 ...

  5. Linux设备模型 (4)

    <Linux设备模型 (2)>和<Linux设备模型 (3)>主要通过一些简单的实作介绍了kobject.kset.kobj_type.attribute等数据结构的用法,但这 ...

  6. Git 仓库结构 (二)***

    一.GIT工作流程 了解git,首先要弄清楚对象在被git管理过程中所处的4个阶段,分别是: 工作目录 index(又称为暂存区) 本地仓库 远程仓库. 从时间先后来讲,工作目录的内容是你当前看到的, ...

  7. Extjs4 登陆界面

    原文地址:http://fengxinnl.iteye.com/blog/1950585 <script src="ext4.2/bootstrap.js" type=&qu ...

  8. Linux 系统管理命令 - iotop - 动态显示磁盘 I/O 统计信息

    命令详解 重要星级: ★★★★☆ 功能说明: iotop 命令是一款实时监控磁盘 I/O 的工具, 但必须以 root 用户的身份运行.使用 iotop 命令可以很方便的查看每个进程使用磁盘 I/O ...

  9. poj 2987 Firing【最大权闭合子图+玄学计数 || BFS】

    玄学计数 LYY Orz 第一次见这种神奇的计数方式,乍一看非常不靠谱但是仔细想想还卡不掉 就是把在建图的时候把正权变成w*10000-1,负权变成w*10000+1,跑最大权闭合子图.后面的1作用是 ...

  10. 《Windows核心编程系列》九谈谈同步设备IO与异步设备IO之同步设备IO

    同步设备IO 所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行. 异步IO是指:线程发起IO请求后并不会挂起而是继续执行.IO完毕后会得到设备的通知.而IO完成端口就是实现这种通知的很 ...