一、引言

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承可以理解为一个对象从另一个对象获取属性的过程。

如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子类,类C是从类A继承而来的。在Java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类

继承中最常使用的两个关键字是extends和implements。

这两个关键字的使用决定了一个对象和另一个对象是否是IS-A(是一个)关系。

通过使用这两个关键字,我们能实现一个对象获取另一个对象的属性。

所有Java的类均是由java.lang.Object类继承而来的,所以Object是所有类的祖先类,而除了Object外,所有类必须有一个父类。

我们可以通过extends关键字可以申明一个类是继承另外一个类而来的,格式如下:

// 父类
class Father {
private String name;
private int age; public void ball() { }
} // 子类
class Son extends Father { }

二、实例

1.在父类的ball()方法中添加如下语句:

System.out.println("我会打球");

2.新建一个类,添加main函数,在函数中实例化Son类

public static void main(String[] args) {
Son son=new Son();
}

3.当我们打出“Son.”的时候,智能提示会显示可以使用的方法,由于Son类继承了Father类,所以我们可以直接使用Father类里面的方法。

最后输出结果:

4.当然你也可以在子类中添加自己的方法,如果想要使用直接实例化之后调用即可

class Son extends Father {
public void Sing() {
System.out.println("我会唱歌");
}
}
public static void main(String[] args) {
Son son=new Son();
son.ball();
son.Sing();
}

三、函数重写

在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。

在继承的关系中,子类的方法名和父类的方法名相同,返回值类型相同,参数列表相同,叫做方法重写。

1.只需要在子类中调用父类方法,编译器会自动生成重写的函数。

@Override
public void ball() {
// TODO 自动生成的方法存根
// super:
// 1.作用就是用来子类调用父类的方法
// 2.如果实在构造方法中使用super,那么表示调用的是父类的构造方法。必须在第一行
// 3.必须在子类构造方法中才能调用父类构造方法
super.ball();
}

2.然后我们就可以在里面写自己想要的代码,在main函数实例化之后执行ball方法,结果

三、笔记

package com.hgd.study5;

/**
* 继承:一个类继另外一个类,被继承的类称之为父类或者基类,继承的类叫做子类或者派生类 子类继承父类,将继承父类的所有属性
* 子类继承父类,将继承父类的所属性和方法包含私有,但是不能访问,其他的都可以直接访问。子类具有拓展的功能
*
* 继承的作用:减少代码的冗余,提高了代码的重复利用
*
* 创建子类对象必先创建父类对象
*
* 方法重写的前提条件
* 方法重写:在继承关系中,子类的方法名和父类的方法名相同,而且需要返回值类型相同,参数列表相同,叫方法的重写
*
* @author HuTiger
*
*/
public class Inherit { public static class Father {
private String nameString;
int age; public Father() {
// TODO 自动生成的构造函数存根
System.out.println("Father");
}
public Father(int i) {
// TODO 自动生成的构造函数存根
System.out.println("Father="+i);
}
public int getAge() {
return age;
} public String getNameString() {
return nameString;
} public void setAge(int age) {
this.age = age;
} public void setNameString(String nameString) {
this.nameString = nameString;
} public void ball() {
System.out.println("我是" + getNameString() + "我会打球");
} } public static class Son extends Father { public Son() {
// TODO 自动生成的构造函数存根
super();//默认是存在的,而且必须是第一行,因为是调用父类的构造方法,父类必须先创建
System.out.println("Son");
}
public Son(String name) {
// TODO 自动生成的构造函数存根
this();
System.out.println("Son="+name);
}
public Son(int i) {
// TODO 自动生成的构造函数存根
this();//表示调用了第一个构造方法
System.out.println("Son="+i);
} /*
* 子类扩展的技能
*/
private void sing() {
System.out.println("我是" + getNameString() + "我会唱歌");
} }
}

Java学习笔记之:Java 继承的更多相关文章

  1. java学习笔记6--类的继承、Object类

    接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...

  2. java 学习笔记1 java语言概述及开发环境

    高级语言运行机制 高级语言按程序的执行方式分为编译型和解释型两种. java语言比较特殊,Java程序的执行必须经过先编译后解释的步骤. 1 编译生成字节码,只面向JVM(.class) 2Jvm执行 ...

  3. Java学习笔记之—Java基础

    将学习到的JAVA基础用xmind记录了下来,需要原件的可以私信

  4. Java学习笔记--通过java.net.URLConnection发送HTTP请求

    http://www.cnblogs.com/nick-huang/p/3859353.html 使用Java API发送 get请求或post请求的步骤: 1. 通过统一资源定位器(java.net ...

  5. Java 学习笔记 (三) Java 日期类型

    以下内容摘自:  https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...

  6. JAVA学习笔记之JAVA 对象引用以及赋值

      关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里,总觉得基本概念很模糊.后来才知道,在许多Java书中,把对象和对象的引用混为一谈.可是,如果我分不清对象与对象引用, 那实在没 ...

  7. 8.4(Java学习笔记)java脚本引擎(Rhino)

    一.java脚本引擎 java脚本引擎是沟通java和脚本语句之间的桥梁,可以通过对应的脚本引擎在java中调用各种脚本语言. 二.脚本引擎执行脚本代码 ScriptEngineManager:为Sc ...

  8. Java 学习笔记(4)——java 常见类

    上次提前说了java中的面向对象,主要是为了使用这些常见类做打算,毕竟Java中一切都是对象,要使用一些系统提供的功能必须得通过类对象调用方法.其实Java相比于C来说强大的另一个原因是Java中提供 ...

  9. JAVA学习笔记--组合与继承

    JAVA一个很重要的功能就是代码的可复用性,代码复用可以大大提升编程效率.这里主要介绍两种代码复用方式:组合和继承. 一.组合 组合比较直观,只需在新的类中产生现有类的对象,新的类由现有类的对象组成, ...

  10. Java学习笔记:01面向对象-继承

    01面向对象-继承 一.java中的数据类型 1.基本数据类型:四类 八种 byte(1) boolean(1) short(2) char(2) int(4) float(4) long(8) do ...

随机推荐

  1. online learning

    转自http://blog.csdn.net/sjkldjflakj/article/details/51886277 不同于以往的批量学习,即给了许多的已标记好的资料来学习出一个假设函数,onlin ...

  2. XAML 概述四

    这一节我们来简单介绍一下XAML的加载和编译,它包括如下三种方式:  · 只使用代码  · 使用代码和未编译的XAML  · 使用代码和编译过的BAML 一. 只使用代码 我们首先创建一个简单的控制台 ...

  3. 1096. Consecutive Factors (20)

    Among all the factors of a positive integer N, there may exist several consecutive numbers. For exam ...

  4. plateform_driver_register和plateform_device_register区别

    设备与驱动的两种绑定方式:在设备注册时进行绑定及在驱动注册时进行绑定. 以一个USB设备为例,有两种情形: (1)先插上USB设备并挂到总线中,然后在安装USB驱动程序过程中从总线上遍历各个设备,看驱 ...

  5. JVM内幕:Java虚拟机详解

    这篇文章解释了Java 虚拟机(JVM)的内部架构.下图显示了遵守 Java SE 7 规范的典型的 JVM 核心内部组件. 上图显示的组件分两个章节解释.第一章讨论针对每个线程创建的组件,第二章节讨 ...

  6. SQL Server2008附加数据库之后显示为只读

    SQL Server2008附加数据库之后显示为只读时解决方法 啰嗦的话就不多说了,直入主题吧! 方案一: 碰到这中情况一般是使用的sa账户登录的,只要改为Windows身份验证,再附加数据库即可搞定 ...

  7. Week1 Team Homework #1: Study the projects done by previous student groups

      我们研究了学长的项目:百度3D地图API的调用.下面是我们对该项目的一些看法: 优点: 界面清晰 各类之间调用及其他关系容易理清. 缺点: 前段html代码过于冗杂,很多(div)块间的层次关系不 ...

  8. c语言函数指针的理解与使用

    1.函数指针的定义 顾名思义,函数指针就是函数的指针.它是一个指针,指向一个函数.看例子: A) char * (*fun1)(char * p1,char * p2); B) char * *fun ...

  9. WPF解析PDF为图片

    偶遇需要解析PDF文件为单张图,此做, http://git.oschina.net/jiailiuyan/OfficeDecoder using System; using System.Colle ...

  10. 2729:[HNOI2012]排队 - BZOJ

    题目描述 Description某中学有n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人 ...