一、引言

继承是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. WINDOWS下更改MYSQL数据路径(datadir)后服务启动1067解决不能改变mysql数据库存储位置

    晚上安装完MYSQL(系统:深度WINXPSP2, MYSQL版本:5.1.32)后,用MYSQL自带的配置工具配置完发现默认的数据存放路径是:C:/Documents and Settings/Al ...

  2. java 高精度

    package BigDecimal; import java.math.BigDecimal; import java.lang.Object; public class BigDecimalTes ...

  3. HTML5特性:使用async属性异步加载执行JavaScript

    HTML5让我兴奋的一个最大的原因是,它里面实现的新功能和新特征都是我们长久以来一直期待的.比如,我以前一直在使用placeholders,但以前必须要用JavaScript实现.而HTML5里给Ja ...

  4. php进行多个数组合并zip

    $a = array_zip(array("Dog","Cat","Horse"), array(1,2,3), array("l ...

  5. sql拆分查询

    有这样一个需求: 临时表sql: create table #AA ( ID int, Name nvarchar(20) ) insert #AA select 1,'苏州/上海/温州' union ...

  6. 测试驱动开发实践 - Test-Driven Development

    一.前言 不知道大家有没听过“测试先行的开发”这一说法,作为一种开发实践,在过去进行开发时,一般是先开发用户界面或者是类,然后再在此基础上编写测试. 但在TDD中,首先是进行测试用例的编写,然后再进行 ...

  7. hdu 5719 BestCoder 2nd Anniversary B Arrange 简单计数问题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5719 题意:一个数列为1~N的排列,给定mn[1...n]和mx[1...n],问有符合的排列数为多少 ...

  8. GITHUB 提交错误 Error: Permission denied (publickey) 解决

    1.  在开发机上生成自己的密钥 ssh-keygen -b 1024 -t rsa -b 指密钥对长度  -t 指加密方式 Enter file in which to save the key ( ...

  9. MySQL 从库日志比主库多

    在群里聊天的时候,一个群友说,生产库主库宕机,但是主从数据库数据一致,但是从库的日志比主库多,很是不理解! 咨询后发现,生产库的主库没有设置sync_binlog=1,而是为sync_binlog=0 ...

  10. 从零开始学ios开发(十八):Storyboards(下)

    这篇我们完成Storyboards的最后一个例子,之前的例子中没有view之间的切换,这篇加上这个功能,使Storyboards的功能完整呈现.在Storyboards中负责view切换的东西叫做“s ...