Java基础知识:继承

栏目: Java · 发布时间: 6年前

内容简介:Java基础知识:继承

学习 Java 继承之前,我们想回忆一下Java面向对象需要特别注意的几个关键点。

面向对象是将复杂的事情简单化了,它通过封装的方式使得代码的重用性更高和安全性更强。平时我们要学会用面向对象的方式去思考,去描述事物或行为。

想要使用OOP,一定要清楚其三个主要特征:

1.对象的行为(behavior):你可以对对象施加哪些操作,或可以对对象施加哪些方法。

2.对象的状态(state):当施加那些操作时,对象会如何响应。

3.对象标识(identity):如何辨别具有相同行为与状态的不同对象。

同一个类的所有对象实例,由于支持相同的行为而具有家族式的相似性。对象的行为是可调用的方法定义的。此外,每个对象都保持着描述当前特征的信息。对象的状态可能会随着时间而发生改变,但是这种改变不会是自发的。对象的改变必须通过调用方法实现。

一、类之间的关系

* 依赖(“uses-a”)

* 聚合("has-a")

* 继承(“is-a”)

在这里我举一个我们日常购物的小栗子,来简单说明一下这三种关系的不同之处。我们在某宝上下了一笔订单,在订单的处理系统中就会出现一些名词:

比如:商品(Item)、订单(Order)、送货地址(Shipping address)、付款(payment)、账户(Account)等。它们被 程序员 设置到不同的类当中。

依赖,就好比一个类的方法操纵另一个类的对象。你下单的时候,Order类可能会使用Account类,应为Order对象要访问Account对象的信用信息。(你可以往大数据或银行信用借代那方面想象)

聚合,聚合意味着类A的对象包含类B的对象。就像一个Order对象必将包含Item对象。

继承(inheritance),就像RushOrder类是由Order类继承而来的。下面我们将具体介绍继承的相关知识点。

Java基础知识:继承

二、继承的重要讲解

在我看来,继承是一种积极的勇于拥抱变化的乐观心态的具体实现方法。是从已有类当中创建新类的过程。从继承当中能够看到产品的派生、升级和扩展。

1.继承的语法

关键字extends表明新类派生于一个已经存在的类中。这个已经存在的类叫做父类,派生出来的类叫做子类。

比如:

class A extends B {
}//A类派生于B类

2.继承中的初始化顺序

简单来说,类的内部结构常见形态有四种:

1)属性(包括类属性和实例属性)

2)方法(包括类方法和实例方法)

3)构造器

4)初始化块(包括类的初始化块和实例的初始化块)

对于继承中的初始化顺序,可分为类的初始化和对象的初始化。

1)继承中类的初始化:(前提:父类中的属性和方法没有private修饰)

在JVM装在类的准备阶段,先为类的所有类属性和类初始化块分配内存空间。并在首次初始化阶段苏红为其进行初始化,类属性和类初始化块之间的定义时的顺序决定了其初始化的顺序。若存在父类,则首先初始化父类属性和类初始化块,一种上溯到Object类最先执行。

2)继承中对象初始化:(前提:父类中的属性和方法没有private修饰)

在new创建新对象时,首先对对象属性和初始化代码块分配内存,并执行默认的初始化。如果存在父类,则先搞好父类的。然后执行父类构造器中的初始化程序,接着才开始对子类的对象属性和初始化执行初始化。

3.继承中的隐藏

访问控制符的带来的访问权限,在上一篇的博客中我已经用表格的形式展示了。这里不再赘述。

当子类继承父类,子类可以继承父类中具有访问控制权限的属性和方法(不要被private修饰就可以了),对于用了private修饰的的父类所有的属性和方法,子类就继承不来了。

当子类需要改变继承过来的方法时,就需要用到重写方法了。一旦重写后,父类的方法对子类来说就表现为隐藏。你再想调用,就将调用重写后的子类当中的方法了。

当你重写了,还想调用父类,可以用两种方法:

1)将子类对象类型强制转换为父类类型,进行强调;

2)通过super.调用,注意它一定要被写到第一行。格式:super.method()

4.注意事项总结:

1)在子类构建对象时,先构建父类,再构建子类。

2)在方法调用的时候,永远永远永远是先在子类中找,子类中如果没有,再去父类中找。

代码示例:

1 public class JiC {
2     public JiC() {
3         System.out.println("我是父类");
4     }
5 
6     public void method() {
7         System.out.println("我是父类中的一个方法");
8     }
9 }
 1 class B extends JiC {
 2     public B() {
 3         System.out.println("我是子类");
 4     }
 5 
 6     public void method() {
 7         System.out.println("我是子类中的一个方法");
 8     }
 9 }
10 
11 public class JiC2 {
12     public static void main(String[] aegs) {
13         System.out.println("上面示例的打印结果是:");
14         B b = new B();
15         b.method();
16     }
17 }

Java基础知识:继承

Java基础知识:继承

本文永久更新链接地址 http://www.linuxidc.com/Linux/2017-06/144873.htm


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

代码整洁之道:程序员的职业素养

代码整洁之道:程序员的职业素养

罗伯特·C.马丁 (Robert C.Martin) / 余晟、章显洲 / 人民邮电出版社 / 2016-9-1 / 49.00元

1. 汇聚编程大师40余年编程生涯的心得体会 2. 阐释软件工艺中的原理、技术、工具和实践 3. 助力专业软件开发人员具备令人敬佩的职业素养 成功的程序员在以往的工作和生活中都曾经历过大大小小的不确定性,承受过永无休止的压力。他们之所以能够成功,是因为拥有一个共同点,都深切关注创建软件所需的各项实践。他们将软件开发视为一种需要精雕细琢加以修炼的技艺,他们以专业人士的标准要求自己,......一起来看看 《代码整洁之道:程序员的职业素养》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具