Java第七天,类的继承
面向对象编程的三大特征:
封装、继承、多态
今天我们学习继承!
继承是多态的前提,如果没有继承就没有多态。
继承主要解决的问题就是共性抽取(将许多类共有的特性便作父类,这样可以较大程度的优化代码)。
父类又称基类、超类;子类又称派生类。
在继承关系中子类“就是”一个父类。如何理解?==》例如:动物类是父类,人类是子类,人就是动物。
如果父类和子类有一个重名的变量。子类中想要访问父类的重名变量需要用到一个关键字super。
无论成员属性还是成员方法,只要当前对象没有,只会向上走父类的同名属性或方法,而不会向下找。
父类的方法子类重写(方法名相同,参数相同)时,①需要标明 @Override 用来检测重写方法是否有效。需要注意的是,这个 @Override 是可有可无的,写只是为了检测,不写也不会影响重写效果。②但是父类的返回值必须大于等于子类的返回值!即父类的返回值是子类返回值的父类或多级父类或同类。③而且子类方法的权限必须大于等于父类方法的权限(public > protected > (default)默认> private),这种(标注③)情况不可以写@Override。
子类的构造方法当中,会有一个默认的super()方法调用,也就是说子类对象创建时会默认先执行父类的构造方法再执行子类的构造方法。
子类必须调用父类的构造函数。1.父类没有写构造函数(系统默认有一个无参构造函数),子类可以不写构造函数。2.如果父类有无参构造函数,子类可以不写构造函数。3.如果父类存在有参构造函数,则子类必须在自己的构造函数中显示的调用父类的构造函数即super(参数名),并且必须是子类构造函数的第一句代码,也就是说只能调用任意一个父类构造函数,不能调用多个。4.如果父类的构造函数只有一个,且修饰符是private,则不可以被继承。
- super关键字的三种用法。①访问父类成员属性。②访问父类成员方法。③访问父类构造函数。
- super关键字用来访问父类内容,this关键字用来访问本类内容。
- super()代表调用父类构造方法,this()代表调用本类构造方法。且不能同时使用,因为调用的构造函数必须为第一句代码。
- Java只支持单继承,不支持多继承,但是可以通过接口实现多继承的功能;Java可以多级继承,原始类为java.lang.Object类;Java一个父类可以有多个子类,一个子类,只能有一个父类。
- 如果父类的构造函数中调用的方法被子类重写,那么调用的会是子类的方法。
父类代码:
public class Animal {
public static int id = 0;
public int age;
public String name;
public Animal(int age,String name){
id++;
this.age = age;
this.name = name;
this.eat();
}
public void eat(){
System.out.println(this.age + "岁的" + this.name + "喝水。");
}
public int getID(){
return this.id;
}
}
第一个子类代码:
public class Dog extends Animal{
public Dog(int age,String name){
super(age,name);
eat();
}
@Override
public void eat(){
System.out.println(super.age + "岁的" + super.name + "吃骨头。");
}
}
第二个子类代码:
public class Cat extends Animal{
public Cat(int age,String name){
super(age,name);
eat();
}
@Override
public void eat(){
System.out.println(super.age + "岁的" + super.name + "吃鱼。");
}
}
程序执行代码:
public class Demo {
public static void main(String[] args) {
Dog dog = new Dog(2,"流浪狗");
Cat cat = new Cat(3,"小花猫");
System.out.println("我家一共养了" + cat.getID() + "只动物");
}
}

Java第七天,类的继承的更多相关文章
- 黑马程序员——JAVA基础之简述 类的继承、覆写
------- android培训.java培训.期待与您交流! ---------- 继承的概述: 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只 ...
- java第四节 类的继承/抽象/接口/多态性
/* 类的继承 类的继承可以简化类的定义 java只支持单继承,不允许多重继承 可以有多层继承,即一个类可以继承其一个类的子类,如类B继承了类A,类C又可以继承类B 那么类C也间接继承了类A 子类继承 ...
- C#图解教程 第七章 类和继承
类和继承 类继承访问继承的成员所有类都派生自object类屏蔽基类的成员基类访问使用基类的引用 虚方法和覆写方法覆写标记为override的方法覆盖其他成员类型 构造函数的执行 构造函数初始化语句类访 ...
- 第六周&Java实验报告四(类的继承)
一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆 ...
- java基础二、类与继承
员工类 Employee, 经理类:Manager public class Employee { private String name; private double salary; privat ...
- JavaScript 类式继承与原型继承
交叉着写Java和Javascript都有2年多了,今天来总结下自己所了解的Javascript类与继承. Javascript本身没有类似Java的面向对象的类与继承术语,但其基于原型对象的思想却可 ...
- java基础讲解09-----接口,继承,多态
还有什么包装类,数字类,这些简单的我就不想过去介绍,前面也大概的介绍了下,继承,多态 1.类的继承 继承的思想:基于某个父类的扩展,制定一个新的子类.子类可以继承父类原有的属性,方法,也可以重写父类的 ...
- “全栈2019”Java第七十八章:内部类可以继承其他类吗?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java编程里类的继承
今天,我们将要讨论的内容是Java里面类的继承的相关概念. 说到继承,我相信大家都不陌生.生活中,子承父业,子女继承父母的财产,这就是继承.实际上,Java里的继承也是如此.对于一个类来说,它的数据成 ...
- (转)Java:类与继承
原文地址: http://www.cnblogs.com/dolphin0520/p/3803432.html 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大 ...
随机推荐
- 998. 最大二叉树 II
最大树定义:一个树,其中每个节点的值都大于其子树中的任何其他值. 给出最大树的根节点 root. 就像之前的问题那样,给定的树是从表 A(root = Construct(A))递归地使用下述 Con ...
- 《JavaScript 模式》读书笔记(3)— 字面量和构造函数1
新的篇章开始了,本章开始,所有的内容都是十分有价值和意义的.本章主要的内容包括对象字面量.构造函数.数组字面量.正则字面量.基本值类型字面量以及JSON等.在大家的工作和实际应用中也有一定的指导意义. ...
- JVM收集器简介
JVM GC收集器集合:
- Spring MVC系列-(3) Bean的装配
3. 高级装配Bean 3.1 Bean的作用域 默认情况下,Spring中的bean都是以单例的形式存在的,无论注入多少次,每次注入的都是同一个实例. 考虑到某些bean可能是可变的,Spring定 ...
- 为 .net 生态贡献力量——制作并上传 nuget 包(内有独家彩蛋)
前言 nuget 是 .net 的常用包管理器,目前已经内置到 Visual Studio 2012 以后的版本.大多数 .net 包都托管在 nuget.org,包括 .net core 框架基础包 ...
- Hive分析窗口函数
数据准备 CREATE EXTERNAL TABLE lxw1234 ( cookieid string, createtime string, --day pv INT ) ROW FORMAT D ...
- Hive架构原理
什么是Hive Hive是由Facebook开源用于解决海量结构化日志的数据统计:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射 成一张表,并提供类SQL查询功能,底层计算引 ...
- PHP7内核(三):源码目录结构
上篇文章我们已经介绍了源码分析工具的安装.配置以及调试方法,本文我们来讲述一下PHP源码的目录结构. 一.目录概览 以php-7.0.12为例,看过源码的同学们应该发现源码目录多达十多个,下面是每个目 ...
- Typora+markdown 最常用语法教程
Typora+markdown 最常用语法教程(by 程序员宝藏) Typora+markdown 最常用语法教程(by 程序员宝藏) 请先配置推荐配置(文件->偏好设置): 文章目录 Typo ...
- 《Mathematical Analysis of Algorithms》中有关“选择第t大的数”的算法分析
开头废话 这个问题是Donald.E.Knuth在他发表的论文Mathematical Analysis of Algorithms中提到的,这里对他的算法分析过程给出了更详细的解释. 问题描述: 给 ...