Java继承实例解析
Java继承
前言
继承是面向对象语法的三大特征之一。继承可以降低代码编写的冗余度,提高编程的效率。通过继承,子类获得了父类的成员变量和方法。一个子类如何继承父类的字段和方法,如何修改从父类继承过来的子类的方法呢。今天我们开始学习有关Java继承的知识。
继承的使用方法
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
例如:我们建立一个人的类作为父类,这里面包括人的名字和身材。
private String name;
private int stature;
// 无参构造
public People() {
}
// 全参构造
public People(String name, int stature) {
this.name = name;
this.stature = stature;
}
//set get方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getStature() {
return stature;
}
public void setStature(int stature) {
this.stature = stature;
}
在Java中我们可以通过 extends 关键字让子类继承父类的属性和方法。
例如:我们想建立一个男女朋友类,他们都有名字和身材这个属性,那么通过继承我们就可以让People这个父类实现复用,这样就不用重复建类了。
public class GirlFriend extends People {
// 无参构造
public GirlFriend() {
}
// 全参构造
public GirlFriend(String name, int stature) {
super(name, stature);
}
// 煮饭方法
public void cook(){
System.out.println(super.getName() + "正在煮饭");
}
// 洗衣服方法
public void laundry(Clothes clothes){
System.out.println(super.getName() + "正在洗衣服");
}
}
public class BoyFriend extends People{
// 无参构造
public BoyFriend() {
}
// 全参构造
public BoyFriend(String name, int stature) {
super(name, stature);
}
// 赚钱方法
public void makeMoney(){
System.out.println(super.getName() + "正在赚钱");
}
// 陪女朋友逛街方法
public void doShopping(GirlFriend girlFriend){
System.out.println(super.getName()+ "正在陪" + girlFriend.getName() + "逛街");
}
}
测试类
public class TestGF {
public static void main(String[] args) {
Girlfriend p1 = new Girlfriend("Marry",180);
p1.Cook();
p1.WashClothes();
boyfriend bf = new boyfriend("jack",180);
bf.MakeMoney();
bf.Company(p1);
}
}
注意:
- 子类不能选择性继承父类;
- Java不支持多重继承,但一个类可以实现多个接口,从而克服单继承的缺点;
- 构造方法不会被子类继承,但可以从子类中调用父类的构造方法。
Java继承实例解析的更多相关文章
- Java多线程-实例解析
Java多线程实例 3种实现方法Java中的多线程有三种实现方式:1.继承Thread类,重写run方法.Thread本质上也是一个实现了Runnable的实例,他代表一个线程的实例,并且启动线程的唯 ...
- java继承实例。
定义了一个点类point,然后线条类line继承了point类,正方形类Suare继承point类. package test; import javax.swing.*; public class ...
- java继承实例
题目:1./*定义一个Person类,这个类的属性有:name.age.color类有构造方法给3个属性赋值类有run方法,能计算出十年后的年龄并输出.类有eat方法,能改变自己的name和color ...
- java继承实例基础
总结:多态.重写.构造方法调用 package com.a; public class fsd { int a = 23; public fsd() { System.out.println(4444 ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- java集合框架之java HashMap代码解析
java集合框架之java HashMap代码解析 文章Java集合框架综述后,具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 源自http://www.codeceo.com/arti ...
- Android开发之IPC进程间通信-AIDL介绍及实例解析
一.IPC进程间通信 IPC是进程间通信方法的统称,Linux IPC包括以下方法,Android的进程间通信主要采用是哪些方法呢? 1. 管道(Pipe)及有名管道(named pipe):管道可用 ...
- Maven--多模块依赖实例解析(五)
<Maven--搭建开发环境(一)> <Maven--构建企业级仓库(二)> <Maven—几个需要补充的问题(三)> <Maven—生命周期和插件(四)&g ...
- Java注解全面解析(转)
1.基本语法 注解定义看起来很像接口的定义.事实上,与其他任何接口一样,注解也将会编译成class文件. @Target(ElementType.Method) @Retention(Retentio ...
随机推荐
- 请写出你最常见到的5个runtime exception?
所谓系统异常,就是-..,它们都是RuntimeException的子类,在jdk doc中查RuntimeException类,就可以看到其所有的子类列表,也就是看到了所有的系统异常.我比较有印象的 ...
- 租户的概念和MybatisPlus实现
租户的概念:https://baijiahao.baidu.com/s?id=1625945681925384464&wfr=spider&for=pc MybatisPlus框架的租 ...
- 为什么需要消息系统,mysql 不能满足需求吗?
1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据 丢失风险.许多消息队列所采用的& ...
- Java中自动装箱与拆箱
一.什么是封装类? Java中存在基础数据类型,但是在某些情况下,我们要对基础数据类型进行对象的操作,例如,集合中只能存在对象,而不能存在基础数据类型,于是便出现了包装器类.包装器类型就是对基本数据类 ...
- Java Lambda详解
Lambda表达式是JDK 8开始后的一种新语法形式. 作用:简化匿名内部类的代码写法 简化格式 (匿名内部类被重写方法的形参列表) -> { 重写方法 } Lambda表达式只能简化函数式接口 ...
- 详解Mysql事务隔离级别与锁机制
一.概述 我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能 就会导致我们说的脏写. 胀读和不可重复读.幻读这些问题. 这些问题的本质都是数据库的多事务并 ...
- 【C语言】预处理、宏定义、内联函数
一.由源码到可执行程序的过程 1. 预处理: 源码经过预处理器的预处理变成预处理过的.i中间文件 1 gcc -E test.c -o test.i 2. 编译: 中间文件经过编译器编译形成.s的汇编 ...
- validator API文档
如何使用 引入 <script src="../node_modules/jquery/dist/jquery.js"></script> <scri ...
- 深入解析 float
0.前言 float属性在css2中是一个热门的属性,被广泛应用于布局之中,同时由于不当使用float带来的问题也非常多,本文结合自己对float的理解以及实际项目中碰到float的相关问题,做一个详 ...
- 简单vue项目脚手架
简单vue项目脚手架 github地址 使用技术栈 webpack(^2.6.1) webpack-dev-server(^2.4.5) vue(^2.3.3) vuex(^2.3.1) vue-ro ...