JavaSE视频学习阶段性总结 四(继承)

继承

1.继承的背景

 1)继承的由来:

Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。比如可以分隔符先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。

 2)对继承的理解:

继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法。若类B继承类A,则属于B的对象便具有类A的全部或部分性质(数据属性)和功能(操作),我们称被继承的类A为基类、父类或超类,而称继承类BA的派生类或子类。

 3)在OOP

在OOP中运用继承原则,就是在每个由一般类和特殊类形成的一般——特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和操作一次性地在一般类中进行显式的定义,在特殊类中不再重复地定义一般类中已经定义的东西,但是在语义上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的属性和操作。特殊类的对象拥有其一般类的全部或部分属性与方法,称作特殊类对一般类的继承。

 4)继承的作用:

i继承避免了对一般类和特殊类之间共同特征进行的重复描述。

ii通过继承可以清晰地表达每一项共同特征所适应的概念范围——在一般类中定义的   属性和操作适应于这个类本身以及它以下的每一层特殊类的全部对象。

iii运用继承原则使得系统模型比较简练也比较清晰。

vi继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(   A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余   度,大大增加程序的重用性。

2.继承的实现

 1)继承的过程:(yasenagat的例子)

以英雄联盟为例:

英雄基类

父类:Hero:

package com.jc; 
	abstract public class Hero {      
  	  abstract void run(); 
   	 public void stop(){/****/}; 
	} 


子类SS继承父类Hero:

package com.jc; 
public class SS extends Hero{           
//SS暗影萨满-小Y
    @Override 
    void run() { 
        System.out.println("ss run()"); 
    }      
    @Override 
    public void stop() { 
        System.out.println("ss stop()"); 
    } 
} 

子类BR继承父类Hero:

package com.jc; 
public class BR extends Hero{ 
//BR蜘蛛
    @Override 
    void run() { 
        System.out.println("br run()"); 
    } 
    @Override 
    public void stop() { 
        System.out.println("br stop"); 
    } 
} 
//执行测试

package com.jc; 
public class Test { 
    @org.junit.Test 
    public void test1(){          
        Hero br = new BR();          
        br.run(); 
        br.stop();          
        Hero ss = new SS();          
        ss.run(); 
        ss.stop();     
     } 
}

输出:

br run()

br stop

ss run()

ss stop()

蜘蛛和小Y都执行了跑和停的方法,方法都是从父类继承的,但是却出现了不同的效果。这正是我们需要的。

3.继承的使用

1)单继承:

Java 是单继承的,意味着一个类只能从另一个类继承(被继承的类叫做父类【基类, base class】,   继承的类叫做子类),Java 中的继承使用 extends 关键字。方法,然后执行该构造方法,生成父类的对象。接下来,再去调用子类的构造方法,生成子类的对象。a)  构造方法不能被继承b)  方法和属性可以被继承c)  子类的构造方法隐式地调用父类的不带参数的构造方法d)  当父类没有不带参数的构造方法时,子类需要使用 super 来显式地调用父类的构造方法,super 指的是对父类的引用e)  super 关键字必须是构造方法中的第一行语句。

2)调用构造方法:

 Java 默认首先调用父类的不带参数的构造

3super:

 如果子类使用 super()显式调用父类的某个构造方法,那么在执行的时候就会寻找与 super()所对应的构造方法而不会再去寻找父类的不带参数的构造方法。与 this 一样,super 也必须要作为构造方法的第一条执行语句,前面不能有其他可执行语句。

4)注意事项:

a)  构造方法不能被继承

b)  方法和属性可以被继承

c)  子类的构造方法隐式地调用父类的不带参数的构造方法 

d)  当父类没有不带参数的构造方法时,子类需要使用 super 来显式地调用父类的构造方法,super 指的是对父类的引用 

e)  super 关键字必须是构造方法中的第一行语句。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
课程介绍:这是一门Java语言入门课程,针对的是Java初学者或者从事其他计算机语言开发但希望转到Java开发工作上来的软件工程师,是所有想入java之门的朋友首先要学的第一门课,也是整个Java开发的核心和基础,也就是大家常说的JAVA SE版本中涵盖的知识;本门课程将采用 windows平台下的intellij IDEA开发环境作为主要的讲解平台,对于熟悉其他Java开发环境的学友们,当然也可以选择自己熟悉的平台;本门课程希望达到的目标是给大家打语言基础,但不希望一上来给大家太重的学习负担,分阶段,逐步的学习,是更好的学习方式,所以在本门课程中,我们将只涉及到基础的语言,以及面向对象程序设计的一些基础概念,更多的知识和概念我们将放在进阶课程中讲解,这一点望大家知晓;在Java诞生的不到30年时间里,Java开发人员的市场需求已经增长到了一个非常惊人的程度,至少目前来看,没有任何一门开发技术能够和java比,从待遇方面,高级Java开发人员的薪资也是相当的高,大概只有c++能够和Java掰一掰手腕,其他的开发技术的薪资待遇,很难与Java比较。很多想学习java的同学,会有一种困惑,感觉Java知识特别零散,除基本的Java语言外,各种概念、各种框架层出不穷,那我们怎么入学习之门,学到什么程度,能找到什么样的工作,这些问题就会困扰着我们;针对这种情况,我将不断推出一系列的Java课程,通过这一系列的课程,为大家搭建一条比较完整的Java学习链条,我并不准备回答大家“学到什么程度,能找到什么样的工作这种问题“,因为当你学到一定的程度之后,你自然就会找到答案,但有一点可以确定:仅仅学习完本门课程还不够,还需要继续深入学习下去!讲解中所安装的是jdk版本是jdk 12版本,但这并不意味着我们要把这个版本中的所有知识讲解的面面俱到,把最有用、最实用,最能帮助大家加薪的知识挑选出来讲解是老师的重要责任;讲师介绍:王健伟老师,网名:狂想(KuangXiang),1995年毕业于哈尔滨工程大学计算机及应用专业,20多年软件开发经验,经历过数十个软件项目开发包括网络通信、网络安全、网络游戏等领域,多年的摸爬滚打使自身具备了极其深厚的开发实力和实战经验。深圳知名网络安全公司安络科技(www.cnns.net)有限公司创始人之一、中国首套网络安全在线扫描评估系统项目负责人,电子工业出版社2003年《Crystal Reports水晶报表设计与开发实务》书籍作者,全球同服独立游戏《冒险之路》制作人。在教学上,老师自带讲课天赋,善于用最清晰、最通俗的语言把复杂问题简单化,让你听了就能懂,当节学完基本就能掌握,老师能够为你节省大量的学习时间并能达到极好的教学效果!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值