继承是:多个类有重复内容,把重复内容放到一个新类中,就可以通过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. 关于kindle无法连接上wifi的问题

    家里换了宽带以后我发现kindle无法链接上WiFi了. 原因可能是我家使用的WiFi网络是1-11之间的信道,也有可能是运营商的问题(由于我是软件开发,对硬件和网络并不是很清楚,只能大概估计一下). ...

  2. 洛谷 P3356 火星探险问题 【最大费用最大流】

    输出方案好麻烦啊 拆点,石头的连(i,i',1,1)(i,i',inf,0)表示可以取一次价值1,空地直接连(i,i',inf,0),对于能走到的两个格子(不包括障碍),连接(i',j,inf,0), ...

  3. 51nod 1244 莫比乌斯函数之和 【莫比乌斯函数+杜教筛】

    和bzoj 3944比较像,但是时间卡的更死 设\( f(n)=\sum_{d|n}\mu(d) g(n)=\sum_{i=1}^{n}f(i) s(n)=\sum_{i=1}^{n}\mu(i) \ ...

  4. linux 安装和远程连接

    准备工作: 1.请安装好vmware 软件 2.linux 镜像包 3.putty 远程连接工具 任务: 设置好root 账号和普通账号 及设置网络 连接最简单使用桥接 只能ping 通 本机 nat ...

  5. [POI2008]BLO-Blockade 【无向图tarjan/鸽点】By cellur925

    题目传送门 lyd无向图tarjan的例题. 一句话题意(不得不佩服lyd老师的高度概括能力):在一张无向连通图上,求出每个点被破坏(去掉与这个点相关的所有边,不去掉这个点)后,无向图中使i,j不连通 ...

  6. django urls路由匹配分发

    django urls路由匹配分发 一.urls配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对 ...

  7. Floyd+限制路径步数(快速幂优化)

    POJ 3613 Cow Relays 最短路可以采用Floyd来计算,但是限制时间在1s内,估计直接写会超时,所以要用到快速幂来优化. 快速幂的思想是:xy=xy/2∗2" role=&q ...

  8. 179 Largest Number 把数组排成最大的数

    给定一个非负整数的列表,重新排列它们的顺序把他们组成一个最大的整数.例如,给定 [3, 30, 34, 5, 9],最大的组成数是 9534330.注意: 结果可能非常大,所以您需要返回一个字符串而不 ...

  9. linux下常用网络操作汇总 专题

    centos 更改主机名,需要更改的几个地方: (1) /etc/sysconfig/network  //更改主机名(2)/etc/hostname  //更改主机名(3) /etc/hosts   ...

  10. [转]如何在 TFS 中使用 Git

    本文转自 http://www.cnblogs.com/stg609/p/3651688.html 对 Charley Blog 的代码进行版本控制的想法由来已久,在代码建立之初其实已经使用过 TFS ...