java程序员必备的基础知识_java面向对象之继承(一)

在学习继承之前我们来来思考这样一个问题:

我想创建一个学生类,男学生类,女学生类,会有这么几个问题:

1、不管是男同学还是女学生,都是学生,学生公有的方法和属性本来就有很多。

2、虽然都是学生,但是男女毕竟有别,还是有一些不一样的地方。

在以往的认知当中,我们不得不创建学生类,男学生类,女学生类,然后书写每一个重复的属性和方法。

但是java给我们提供了更好的解决方案叫继承。

java程序员必备的基础知识_java面向对象之继承(一)

1、基本介绍

继承可以解决代码复用的问题,一个类可以继承一个类,被继承的类我们称之为【父类】或者【超类】,另一个类称之为【子类】也 叫【派生类】,子类可以通过extends关键字轻松拥有获取父类的 成员变量和成员方法的能力,除了被private修饰的。在java中是单 继承的,这样可以规范代码的实现。

继承其实很好理解的,我们天生就会继承来自父母的很多基因,那爸爸的很多能力或者特征你天生就会拥有。

java程序员必备的基础知识_java面向对象之继承(一)

写一个小代码,我们尝试理解一下:

// 定义一个父亲类,有名字属性和一个吃的方法public class Father {private String name; public void eat(){ System.out.println('I am eating!'); } public String getName() { return name; } public void setName(String name) { this.name = name; } }
// 子类使用extends关键字public class SonONe extends Father {}// 子类使用extends关键字public class SonTwo extends Father {}

现在无论是哪个子类都能调用父类的方法:

public static void main(String[] args) {SonONe sonONe = new SonONe();sonONe.eat();}

当然,儿子作为一个单独的个体,它依然可以拥有属于自己的属性和方法。

public class SonONe extends Father {    public void play(){    System.out.println('I am playing!');    }}

经过这样的设计,我们的代码实现起来可以十分的灵活。

比如:我们现在一个现实中父亲、儿子、孙子之间的关系的类,我们是不是就可以这样设计类了。

public class Father { public String name = 'lily'; public Father() { System.out.println('Father is created!'); } public void eat(){ System.out.println('father is eating!'); }}
public class Son extends Father{    public Son() {    System.out.println('Son is created!');    }    public void work(){    System.out.println('son is working!');    }}
public class GrandSon extends Son{ public GrandSon() { System.out.println('GrandSon is created!'); } public void play(){ System.out.println('grandson is playing!'); }}
public static void main(String[] args) {new GrandSon();}//下面为输出的结果:Father is created!Son is created!GrandSon is created!
(0)

相关推荐

  • 讲真,这三道Java入门级面试题,你也不一定能搞定

    想更好的应对面试,还是需要不断学习不断总结,下面我们来分析三道面试题. 涨薪必备的面试小抄 下面是一道入门级面试题,这道题基本上都是问初级的小伙伴比较多,但如果你是中级,或者高级.我觉得未必都能回答上 ...

  • 一文带你了解程序员必备的基础数学知识

    二进制是计算机系统的基础,余数被运用在很多常见的算法和数据结构中,而布尔代数是编程中控制逻辑的灵魂. 二进制.余数和布尔代数 1 二进制 许多专业人士都认为计算机的起源来自数学中的二进制计数法.这样的 ...

  • 帮公司面试月薪1万6的java程序员,问得都很基础啊

    B站就是下面账号 视频可能更有感觉哦 面试的答案在本文章 建议大家先看视频,然后看自己能否回答上 回答不上的回头看看本文章效果更好哦 面试的日子里有程序汪的面试视频和文章,面试不慌了(这广告打的) 这 ...

  • 马士兵JAVA高级互联网架构师|JAVA程序员涨薪必备【马士兵教育】

    5年大数据.人工智能开发经验,曾经任职于HPE.国家生物研究院等多家企业,负责过HPE国内基地海量数据的共享与存储平台.医疗大数据存储解决方案.基于基因信息诊断模型(借助TensorFlow.Kera ...

  • 程序员必备基础:如何安全传输存储用户密码?

    前言 我们开发网站或者APP的时候,首先要解决的问题,就是「如何安全传输和存储用户的密码」.一些大公司的用户数据库泄露事件也时有发生,带来非常大的负面影响.因此,如何安全传输存储用户密码,是每位程序员 ...

  • 程序员必备的思维能力:结构化思维

    在日常工作中,我们时常会碰到这样的情况,有的人讲一件事情的时候逻辑非常混乱,说了很多事情的罗列,却说不到重点.有的人写代码,本身的业务逻辑并没有多复杂,但呈现出的代码却像一堆线团,混乱不堪,无法理解. ...

  • 【赠书】程序员必备!如何深入理解计算机系统

    周末到了,本次给大家赠送3本新书,这次赠送的书籍是<深入理解计算机系统:第3版>. 这是一本什么样的书 这是一本讲解计算机软硬件系统的书,从程序员视角全面剖析其实现细节,使读者深刻理解程序 ...

  • 成为一名优秀的Java程序员9+难以置信的公式

    成为一名优秀的Java程序员 成为一名优秀的Java程序员并不重要,但是首先您应该了解基本的编程语言. 好吧,你知道那太好了.我们应该一步一步地精通Java编程,并应遵循所有说明,改进Java的编程逻 ...

  • 优秀程序员必备以下五点能力,你都符合吗?

    与30年前相比,现在互联网时代的程序员已经有了很多细分的研发方向,比如前端.后端.算法.桌面软件.人工智能等等,不同的细分方向,也都有不同的要求.但不论选择什么方向,一名优秀的程序员都应具备下面这五点 ...

  • 编程新手该如何调优程序?程序员必备性能调优利器——火焰图

    让我们回想一下,曾经作为编程新手的我们是如何调优程序的?通常是在没有数据的情况下依靠主观臆断来瞎蒙,稍微有些经验的同学则会对差异代码进行二分或者逐段调试.这种定位问题的方式不仅耗时耗力,而且还不具有通 ...