继承是:多个类有重复内容,把重复内容放到一个新类中,就可以通过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. spark安装和登陆配置

    1.下载安装包: http://www.igniterealtime.org/downloads/index.jsp 2.点击安装后打开登陆界面: 2.点击“高级”,设置相关配置: 3.点击“登陆”后 ...

  2. codeforces 688E E. The Values You Can Make(dp)

    题目链接: E. The Values You Can Make time limit per test 2 seconds memory limit per test 256 megabytes i ...

  3. python库学习笔记——BeautifulSoup处理子标签、后代标签、兄弟标签和父标签

    首先,我们来看一个简单的网页https://www.pythonscraping.com/pages/page3.html,打开后: 右键"检查"(谷歌浏览器)查看元素: 用导航树 ...

  4. vertical-align 和line-height 以及baseline的解析

    line-height是相对于font-size来计算的,vertical-align的百分比值是相对于line-height来计算的,vertical-align的默认是baseline; demo ...

  5. WebUploader上传大文件时,上传出错问题

    上传普通文件没有问题,当文件达到一定大小的时候,上传错误,返回结果是404,我可以肯定的是路径是没有问题的.因为上传小文件等都是可以的. 然后使用webuploader的uploaderror监控错误 ...

  6. node+ws模块实现websocket

    先来吐槽一下,想要找点技术文章真tm不容易,全是jb复制粘贴,还冒充原创.搜索一个ws实现websocket全是一样的.一个字都没变,我能说什么.最后想到搜索ws模块githup居然前两页没有,也是那 ...

  7. Ruby  Array类

    Array类 更新: 2017/06/03 更新: 2017/08/31 更新sort的详细内容 更新: 2017/09/07 增加each_with_index, each.with_index(o ...

  8. 【爬坑系列】之vxlan网络实现

    linux 内核从3.7之后就内部集成了vxlan功能,所以可以使用linux内核提供的vxlan功能,经过配置创建vxlan网络. 而从Docker自Docker Engine 1.9之后,就自带o ...

  9. 进击的Python【第十三章】:Web前端基础之HTML与CSS样式

    进击的Python[第十四章]:Web前端基础之HTML与CSS样式 一.web框架的本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客 ...

  10. [洛谷2839/国家集训队]middle

    Description 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整.给你一个长度为n的序列s.回答Q个这样的询问:s的左端点在[a,b]之 ...