[Java入门笔记] 面向对象三大特征之:继承

理解什么是继承

首先我们知道,面对对象有三大特征:

封装:解决了数据的安全性问题

继承:解决了代码的重用问题

多态:解决了程序的扩展问题

上一篇博客中,我们了解了一下封装,现在我了再来看看什么是继承。

在现实生活中,我们可以把封装理解成儿子对父亲财产的继承。而在面向对象程序设计中的继承,是一个对象从另一个对象获取属性和方法的过程。

继承是利用现有的类创建新类的过程,现有的类称作基类(父类),创建的新类称为派生类(子类),派生类可以拥有所有基类的非私有的属性和方法。

例如,我们可以有一个类“人”,而我们要创建一个新的类“学生”,学生也是属于“人”的一种,有“人”这个类的一些共通属性行为,我们就可以把“学生”这个类继承自“人”,而还有“小学生”、“中学生”、“大学生”,他们都属于学生,我们可以让他们继承自“学生”类。

在继承中,最高层的应该是最具有普遍性的、最符合一般情况的,往下一层,都应该比上一层更具体,在继承中子类能够自动共享基类中的成员属性和成员方法。

如何使用继承

在Java中,要继承,需要使用extends关键字,继承的语法格式如下:

[访问修饰符] class 子类名 extends 父类名 {
    成员列表
}

如

public Student extends Person{
    ......
}

例子:

按照上面的举例,我们先定义一个Person类

public class Person{
    public String name;
    public int age;

    public void sleep(){
        System.out.println("我正在睡觉");
    }

    public void eat(){
        System.out.println("我正在吃饭");
    }
}

对于“人”来说,人都有一个名字,都有年龄,能够睡觉,也可以吃饭。

而我学如果此时需要有一个学生类,学生也属与人,学生也都有人的特征,此时我们便可以使学生继承于人。

public class Student extends Person{
    public String sid;  //学号
    public String cls;  //班级

    public void study(){
        System.out.println("我正在学习");
    }

}

对于学生来说,学生有自己的学号,有自己的班级,还有学习等等功能。

public class Test{
    public static void main(String[] args){
        Student stu = new Student();
        stu.name = "张三";
        stu.age = 20;  //我们可以为Student类型的对象设置name和age,因为S图等继承自Person,所以也拥有Person类的属性和方法。
        stu.sleep();
        stu.eat();  //我们也可以使用Person类的方法。

        stu.sid = "S20150101001";  //当然,我们也可以使用Student自己的属性和方法
        stu.cls = "1001";
        stu.study();

        Person p = new Person();
        p.study();  //错误,父类不可以使用子类的属性和方法。
    }
}

当然,如果还需要有大学生等,我们可以定义大学生,使大学生继承自学生类,大学生便可以拥有学生类和“人”类的属性和方法。

需要注意的是,Java中的继承是单继承,也就是说,只能继承一个父类,如果Student继承了Person类,那就不能再直接继承其他的类。

继承中的构造方法

需要注意的是,父类中的构造方法是不能被继承的。

同时需要我们注意的是,在对象的构建过程中,会先构建出父类,在构建出子类,这个比较好理解,就想在现实生活中一样,只有先有父亲,而后才有儿子一样。

例如:

class ParentClass {  //定义父类
  public ParentClass() {  //构造方法
    System.out.println("这是父类的构造方法。");
  }
}

class ChildClass extends ParentClass {  //子类继承于父类
  public ChildClass() {  //构造方法
    System.out.println("这是子类的构造方法。");
  }
}

public class ConstructorTest {  //该类用于容纳main方法
  public static void main(String[] args) {
    ChildClass cc = new ChildClass();  //实例化子类对象
  }
}

执行输出:

这是父类的构造方法。
这是子类的构造方法。

因此:

  • 当实例化子类的对象时,必须先执行父类的构造方法,然后再执行子类的构造方法。
  • 如果父类还有更上级的父类,就会先调用最高父类的构造方法,再逐个依次地将所有继承关系的父类构造方法全部执行。
  • 如果父类的构造方法执行失败,那么子类的对象也将无法实例化。

super关键字

在Java中,用super关键字可以对父类进行操作。

super主要有两种用途:

第一种用途是:在子类的构造方法中,super关键字可以显式地调用父类的构造方法,用于将参数传递给它;

其语法是:super(参数);

需要注意的是:该条语句必须是构造方法中的第一条语句。

第二中用途是:如果子类中有和父类相同名字的成员,在子类中是默认使用子类中的成员的,但是我们可以super关键字显式调用父类中的成员。

语法:super.成员名

需要注意的是:父类中该成员不是private的。

Java中继承的特点与继承作用

特点

继承是单向的,子类可以访问父类中的成员,但父类无法访问子类的成员。

Java中只允许单继承,一个子类只能拥有一个父类。

作用

引入继承,实现了代码重用;

引入继承,实现了递增式的程序设计。

能减少代码和数据的重复冗余度,并通过增强一致性来减少模块间的接口和界面,从而增强了程序的可维护性;

能清晰地体现出类与类之间的层次结构关系。

时间: 2024-12-18 19:54:34

[Java入门笔记] 面向对象三大特征之:继承的相关文章

[Java入门笔记] 面向对象三大特征之:封装

了解封装 什么是封装? 在Java的面向对象程序设计中,有三大基本特征:封装.继承和多态.首先我们先来看看封装: 在Java的面对对象程序设计中,封装(Encapsulation)是指一种将函数功能实作细节部份包装.隐藏起来的方法.封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随便访问.如果要访问类中的代码和数据,必须要通过严格的控制. 为什么要使用封装? 使用封装主要有以下好处: 能够隐藏该类中一些功能的实现细节.让调用者通过事先实现好的方法访问类的功能和数据,同时也限制

[Java入门笔记] 面向对象编程基础(三):成员变量和局部变量

在类中,变量根据定义的位置不同,可以分为成员变量和局部变量. 成员变量是在类体内,方法之外定义的变量,局部变量是在方法中定义的参数. 成员变量 成员变量分为类属性和实例属性,定义时没有static修饰的称为实例属性,有static修饰的称为类属性,类属性和实例属性的区别就是类属性是属于类的,它并不属于哪一个对象,它从这个类的准备阶段就一直存在,一直到这个类完全销毁.实例属性属于对象,只有某个对象被创建时,它才被创建,对象被回收,从属于该对象的实例属性也就被销毁了. 类属性的定义语法: [修饰符]

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

Java 入门基础——面向对象的特征

计算机软件系统是现实生活中的业务在计算机中的映射,而现实生活中的业务其实就是一个个对象协作的过程.面向对象编程就是按现实业务一样的方式将程序代码按一个个对象进行组织和编写,让计算机系统能够识别和理解用对象方式组织和编写的程序代码,这样就可以把现实生活中的业务对象映射到计算机系统中. 面向对象的编程语言有封装.继承 .抽象.多态等4个主要的特征. 封装: 封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的"高内聚.低耦合",防止程序相互依赖性而带来的变动影响.在面向

类与对象 面向对象和面向过程对比 面向对象三大特征:封装 继承 多态

 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门 面向对象:大象, 你进冰箱. 此时主语是大象. 我操纵的是大象. 此时的大象就是对象 1. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤, 即, 先?干什么, 后干什么. 基于该思想编写程序就好比在编写一套流水线. 是一种机械 式的编程

java面向对象三大特性之继承

通过重用已经测试并验证通过的代码,怎样才减少开发工作,所有开发团队都在为一问题而努力.一个久经考验的方法是通过有效地使用Java继承优化应用程序开发. 继承的从某种意义上讲,继承的短暂美就如同宇宙中所有事与其它事情都存在一种特殊的关系. Java继承 Java继承是面向对象的最显著的一个特征.继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力. Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但

[黑马程序员]Objective-C 面向对象三大特性之继承

基本概念 程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量). 比如我们前文(Objective-C 面向对象三大特性之多态)中提到的Animal和Dog类: #import <Foundation/Foundation.h> @interface Animal : NSObject -(void) eat; @end @implementation Animal -(void)

[Java入门笔记] Java语言简介

前言 学习Java有一段时间了,但是一直缺少一个系统的思想,现在重新通过书籍中.网上的文章,视频等资料,整理与回顾Java的知识点. 言归正传,让我们先从了解Java语言开始. Java语言的由来 Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出.Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的.1995年更名为Java,并

JAVA基础笔记(很实用)继承-多态-抽象类-接口-异常-集合-IO-线程-Socket

第七章:Java继承 一.继承的概念 1.一个父类派生出一个子类的机制称为继承. 2.承是重用程序代码的有力手段,当多个类之间存在相同的属性和方法时,可以从这些类中抽象出父类. 3.们只需要在父类中定义这些属性和方法,而子类无须重新定义这些属性和方法,直接从父类继承即可. 4.通过继承,子类就会自动的拥有在父类中定义的属性和方法. 5.两个或多个类的成员中存在一部分相同的情况,通过继承机制,可以利用现有的类来创建新的类. 6.子类不但拥有父类的成员,还可以定义新的成员. 7.可以提高软件的可重用