JAVA篇<一> 继承extends(已转移到JAVA总结篇)
前题:如果不经过指出继承,那么所有的类都继承了JAVA中的Object类。
正文:
继承的关键字是:extends,是所有面向对象语言的重要特性。
例public class TestExtends {
public static void main(String[] args){
Student stu = new Student();
stu.name = "kk";
stu.height = 172;
stu.rest();
Student stu2 = new Student("xx",150,"Science");
}
}
class Person{
String name;
int height;
public void rest(){
System.out.println("休息一会儿!");
}
}
class Student extends Person{
String major;
public void study(){
System.out.println("学习俩小时!");
}
public Student(){};
public Student(String name,int height,String major){
this.name = name;
this.height = height;
this.major = major;
}
}
在上例子中我们首先定义了一个Person类,这是一个父类。而之后又定义了一个Student类,Student属于从父类Person中派生出的子类。

当两个类存在继承关系当时候,子类会自动继承父类的属性和方法,那么子类中还可以使用父类的属性和方法。在JAVA中只允许单继承,一个子类只能有一个父类,但是一个父类却可以派生出多个子类。
子类不仅仅继承了父类的属性与方法,还可以发挥出自己的“特长”。比如在父类Person中我们定义了一个简单的“人”,这个类中包含基本信息有名称name和身高height。这个抽象的“人”可以完成的动作是休息rest。
而从一个抽象的人派生出的子类Student就更加具体了。简单来说子类就是把父类更加细化和丰满的一个过程。从Person中诞生了Studnet,Student毫无疑问当然是Person的一员。但是Student却具有着Person大众所不具有的属性(代码段中并未展开),比如学号,比如成绩单等。这样我们就从一个抽象概念的人中拿出了一个有血肉的个体概念。
引入了Person类以后我们还可以从Person类中派生出Teacher、Parent等子类,这样所有子类就可以共用到Person类的属性与方法。在同一个具体项目之中,互相有联系的对象都是从同一个父类中派生出来的,这样有助于规范代码,同时节省操作量。
规范:
1、针对属性
1)子类能够继承父类的public和protected成员变量,并不能继承父类的private成员变量。
2)对于父类的包访问权限成员变量(default,如果不加权限修饰符就默认为default),必须当子类与父类在同一包下才能继承,否则子类不能继承。
3)当子类中出现与父类同名的成员变量时时候,父类的成员变量会被隐藏。即在调用子类对象时候出现的是子类的成员变量。如果要在子类中访问父类的同名成员变量,需要用super关键字来引用。
2、针对方法
1)同上述针对属性--->1)
2)同上述针对属性--->2)
3)如果在子类中出现了与父类同名的成员方法,则子类方法会把父类方法覆盖掉。要调用父类同名方法则要使用super关键字。(这一点很方便的是,可以仅仅在父类中写一个概念性的空方法,而在每个具体子类中对这个空方法根据子类对象具体特点来重写。)
3、针对构造器
子类不能够继承父类的构造器。但是当父类当构造器带有参数时,子类构造器中必须现实通过调用super关键字来调用父类哦构造器并且配上适当的参数列表。如果父类构造器无参,则不需要用super调用父类构造器。如果没有使用super,则系统会自动调用父类的无参构造器。
JAVA篇<一> 继承extends(已转移到JAVA总结篇)的更多相关文章
- Java面向对象之继承extends 入门实例
一.基础概念 (一)继承的好处: 1.继承:提高了代码的复用性. 2.让类与类之间产生了关系,给多态这个特征提供了前提. (二)继承的种类: 1.单继承:一个类只能有一个父类. 2.多继承:一个类可以 ...
- 【已转移】【Java架构:基础技术】一篇文章搞掂:Java 8
本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 一.Java的历史与演变 目的:为完全了解Java,需要理解Java的诞生原因.成型动力以及他继承的思想. 计算机语言的创新与发展 ...
- 【已转移】【Java架构:基础技术】一篇文章搞掂:Spring
本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 本文是对<SPRING实战第4版>的总结,大家也可以去仔细研读该书 [------------------------ ...
- JAVA 继承 extends
/* 继承 1.提高了代码的复用性,简化了代码 2.让类与类之间产生了继承关系,才有了后面的多态的特性的存在 注意:千万不要为了获取其它类的功能简化代码,而建立继承关系, 必须要类与类之间存在继承关系 ...
- extends:类似于java中的继承特征,extends="struts-default"
extends:类似于java中的继承特征,extends="struts-default"就是继承struts-default.xml,它里面定义了许多跳转类型.拦截器等一些常用 ...
- JAVA之旅(六)——单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖
JAVA之旅(六)--单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖 java也越来越深入了,大家加油吧!咱们一步步来 一.单例设计模式 什么是设计模式? JAVA当中有 ...
- java 继承extends 的相关知识点
java只有单继承,不能多继承 子类只能继承父类的非私有成员(成员变量.成员方法) 子类不能继承父类的构造方法,但是可以通过super关键字访问父类的构造方法 继承 要体现子类父类的 继承关系, ”i ...
- 面试又被 Java 基础难住了?推荐你看看这篇文章。
本文已经收录自 JavaGuide (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. 1. 面向对象和面向过程的区别 面向过程 :面向过程性能比面 ...
- Java集合最全解析,学集合,看这篇就够用了!!!
在看集合类之前, 我们要先明白一下概念: 1.数据结构 (1):线性表 [1]:顺序存储结构(也叫顺序表) 一个线性表是n个具有相同特性的数据元素的有限序列.数据元素是一个抽象的符号,其具体含义在不同 ...
随机推荐
- Meterpreter提权详解
0x01 Meterpreter自动提权 1.生成后门程序 我们在kali的命令行下直接执行以下命令获得一个针对windows的反弹型木马: msfvenom -p windows/meterpr ...
- Elasticsearch6.5.2 X-pack破解及安装教程
先正常安装 elasticSearch, kibana. 1. 如果是6.5.2版本,可以直接下载jar文件:https://download.csdn.net/download/bigben0123 ...
- centos中编译安装nginx+mysql +php(未完)
参考地址:http://www.cnblogs.com/htian/p/5728599.html 去官网找到PCRE,并下载http://www.pcre.org/wget ftp://ftp.csx ...
- Centos 7最小化redis部署
配置源 [GuGe] name=GuGe baseurl=ftp://192.168.1.82 gpgcheck= enable= 安装 sh-4.2# yum -y install gcc gcc- ...
- CSS难点 为什么height设置100%会失效,分栏目等高布局(高度自适用布局)的实现方案
前言 相信在平时写CSS的时候大家都或多或少遇见过设置了height为百分比的时候发现不起作用.今天我们就来一探究竟 原因:父元素未设置具体高度,子元素设置height:100%是无效的. 现象以及方 ...
- [Luogu P1144]最短路计数
emmmm这个题看起来非常复杂,实际上仔细一分析发现到一个点最短路的个数就是所有前驱最短路个数之和.如果在图上表示也就是以1为根的bfs搜索树,一个点的最短路个数等于每一个能够向它扩展的所有点的最短路 ...
- Blender 2.78 突然卡顿
之前一直好好的直到这两天打开就一直延迟半拍,重启重装无效. 解决方法: NVIDIA控制面板→管理3d设置→程序设置→选择blender,更改显卡为集成显卡→应用 亲测有效.
- rem是怎么计算的
「rem」是指根元素(root element,html)的字体大小,从遥远的 IE6 到版本到 Chrome 他们都约好了,根元素默认的 font-size 都是 16px. rem是通过根元素进行 ...
- nnet3配置中的上下文和chunk(块)大小
Nnet3配置中的上下文和块大小 简介 本页讨论了nnet3配置中关于解码和训练的块大小以及左右上下文的某些术语.这将有助于理解一些脚本.目前,从脚本角度来看,没有任何关于nnet3的"概述 ...
- 五子棋.html
二维数组的定义 , canvas对象的使用 二维数组:以下用new,其实简化 [] 即可, var tArray = new Array(); //先声明一维 for(var k=0;k<i;k ...