浅谈Java三大特性之继承
前言
类的继承性是面向对象语言的基本特性,多态性前提是继承性。Java 支持继承性和多态性。——Java从小白到大牛
继承:三大特性之一,关键词:extends
简单用伪代码去介绍一些
假设需要定义个student类
public class Student{
private String name;//名字
private int age;//年龄
private int sex;//性别
}
再来个需求,需要定义一个学生Andy,不用继承时候,需要一个个去定义;
public class Andy{
private String name;
private int age;
private int sex;
private String country;//新增一个国家信息
}
从上面看两者有着很多的相似的重复定义的东西,如果使用继承去写这段代码就可以如下:
public class Andy extends student{
private String country
}
所以从上面可以看出类的继承大致用途,Andy类已经继承了Student类,上面的父类便是student,extends后面跟着的。继承的时候,要明确指出,要不然就是在Java标准根类Object进行继承。
再者,在继承的过程中,除了你可以在新的类中去添加东西,也不一定非得使用基类的方法属性等。
还可以有多层继承关系(下面的输出是随便定义的伪代码,可以是直接输出某一些语句,方便运行查看)
class Art{
Art(){输出1}
}
class Music extends Art{
Music(输出2)
}
class Dance extends music{
public Dance(){输出3}
public static void main(String args[]){
dance x = new dance();
}
}
//输出的顺序是1 2 3
父类与子类的构造函数问题
若不在类中定义构造函数,会默认生成一个无参的函数构造器,如果有了就不会。(构造器即构造函数,与类同名,在初始化的时候就被调用,,默认的构造函数是不带任何参数的)
class Art{
}
//等同于下面
class Art{
public Art(){
//
}
}
super关键字
Java用super表示超类的医生,当前类是从超类继承来的。
class Game{
int h;
Game(int i){//构造函数
System.out.println("this is a game!");
}
public static void printg(int d){//普通函数
System.out.println("12");
}
}
class ballGame extends Game{
ballGame(int i){
super(i);//调用父类的构造器,漏了这句就会报错,显示there is no default constructor available
System.out.println("ballGame is coming!");
super.h = 3;//访问父类的属性
}
}
super可以用于访问父类定义的属性,用于调用父类中的成员方法,super代表父类的内存空间。可以访问父类的父类
class Game{
int h;
Game(int i){//构造函数
System.out.println(i);//输出
System.out.println("第一层");
}
public static void printg(int d){//普通函数
System.out.println("1");
}
}
class ballGame extends Game{
ballGame(int i){
super(i);//调用父类的构造器
System.out.println("第二层");
super.h = 2;//访问父类的属性
}
}
public class jichengSuper extends ballGame{
jichengSuper(int b) {
super(b);//调用的是上面父类的构造函数,将输出3
int a = super.h ;//将第二层里的3赋值给a
System.out.println(a);//打印
}
public static void main(String args[]){
new jichengSuper(3);//这里的3将代进去上面的构造函数jichengSuper中
System.out.print("最后一层");
}
}
/**
*output:
3
第一层
第二层
2
最后一层
*/
接口在实现的时候,在类中一定要实现接口的抽象方法
而继承不用,想要用哪个再用
others
可以有多个接口但是只能有一个继承。一般情况下,一个子类只能继承一个父类,这称为“单继承”,但有的情况下一个子类可以有多个不同的父类,这称为“多重继承”。在Java中,类的继承只能是单继承,而多重继承可以通过实现多个接口实现。
浅谈Java三大特性之继承的更多相关文章
- 浅谈Java三大特性
Java三大特性想必大家都不陌生:封装.继承以及多态.很多刚接触Java的小伙伴都会想,它们到底有什么了不得之处,又赋予Java这门编程语言什么魔力呢?今天我们来探讨一下吧~~ 首先,名词解释: 封装 ...
- 浅谈Java三大特性之封装
目录 前言 好处 介绍(实现方式) 示例 小结 感谢阅读!!! 三大特性之浅谈封装 前言 英语:Encapsulation--封装,包装. 面向对象的封装与真实世界的目的是一样的.封装能够使外部访问者 ...
- 浅谈Java三大特性之多态
目录 一.前言 二.发生的条件 三.多态包含(或者说体现在)两个方面: 四.示例 感谢阅读 一.前言 这篇讲下三大特性之一的多态,可以通俗得去理解,多种形态,多种姿态... 那么在面向对象的程序设计中 ...
- Java三大特性(封装,继承,多态)
Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...
- java 三大特性_继承、封装、多态_day005
一.继承: java的三大特性之一.两个类之间通过extends关键字来描述父子关系,子类便可拥有父类的公共方法和公共属性.子类可以继承父类的方法和属性,子类也可以自己定义没有的方法或者通过覆盖父类的 ...
- 浅谈Java三大框架与应用
前言:对于一个程序员来说,尤其是在java web端开发的程序员,三大框架:Struts+Hibernate+Spring是必须要掌握熟透的,因此,下面谈谈java三大框架的基本概念和原理. JAVA ...
- Java三大特性之继承
二.类的继承 1. 概念:从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并能扩展新的能力. 2. 一个不由任何类派生出来的类称为基类,一个派生类最近的上层类称为该类的父类,从某一类派生出来 ...
- java提高篇(二)-----理解java的三大特性之继承
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
- java提高篇(二)-----理解java的三大特性之继承
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
随机推荐
- stm32f103中freertos的tasks基本使用案例及备忘
基本实例 freetos的在stm32中使用踩了一些坑,事情做完了,就 做个备忘,希望能给后面的人一些借鉴. 先给出一个实际的例子吧. 启动代码 void task_create(void) { ...
- jquery点击添加样式,再次点击移除样式
$("#divSetting").on("click", function () { $(this).toggleClass("open") ...
- EF三种数据库操作模型比较
https://blog.csdn.net/xiongmeiqin/article/details/80196089 EF 中 Code First 的数据迁移以及创建视图 写在前面: EF 中 Co ...
- kali中网卡、ssh、apache的配置与开启
在Kali-linux中修改网卡文件,启动ssh和apache服务的方法 1.su root //取得root权限 2.shift+字母 //大小写字母切换 3.修改网卡 ...
- bugku 闪的好快
这是一道二维码的题目.保存图片祭出神器StegSolve.然后Analysis->Frame Browser.这里发现是18张图.也就是18张图片. 我拿手机一个挨着一个扫的.扫出来的结果是SY ...
- 【visio】跨职能流程图
归属于 流程图类别 相比于普通流程图,突出了参与流程的组织.部门之间的联系,形式化地说,它突出的是参与流程的对象之间的联系. 它除了表达基本流程,同时也能展示每个每个流程的归属方,让每个对象明确知道自 ...
- Django视图层、模板层
过滤器方法 upper 大写方式输出 add 给value加上一个数值 capfirst 第一个字母大写 center 输出指定长度的字符串,把变量居中 cut 删除指定字符串 date 格式化日期 ...
- HttpServer性能比较
在自己的本子上随便测了下几款HttpServer,环境信息就不贴出来了,主要是比对下差距. 测试内容是输出 text/plain 的 hello, world. 先说结论:Netty > Joo ...
- 【游戏体验】Colour My World(让我的世界充满色彩)
这是一款玩法简单的游戏 但是它给你的感觉不一样 推荐试玩 个人测评 游戏性 7/10 音乐 9/10 剧情 6/10 总评 22/30
- python面向对象封装案例2
封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类 ...