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 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大 ...
随机推荐
- USB概述及协议基础
USB概述及协议基础 USB的拓扑结构 USB是一种主从结构的系统.主机叫做Host,从机叫做Device(也叫做设备). 通常所说的主机具有一个或者多个USB主控制器(host controller ...
- list的常用方法
注:lst为定义的列表变量,如:lst = [1, 2, 3, 4, 5] 增: 1. lst.append() 末尾追加 lst = [1, 2, 3, 4, 5, 6] lst.append( ...
- WordCount程序(Java)
Github项目地址:https://github.com/softwareCQT/web_camp/tree/master/wordCount 一.题目描述 实现一个简单而完整的软件工具(源程序特征 ...
- 面试官再问我如何保证 RocketMQ 不丢失消息,这回我笑了!
最近看了 @JavaGuide 发布的一篇『面试官问我如何保证Kafka不丢失消息?我哭了!』,这篇文章承接这个主题,来聊聊如何保证 RocketMQ 不丢失消息. 0x00. 消息的发送流程 一条消 ...
- 图数据库 Nebula Graph TTL 特性
导读 身处在现在这个大数据时代,我们处理的数据量需以 TB.PB, 甚至 EB 来计算,怎么处理庞大的数据集是从事数据库领域人员的共同问题.解决这个问题的核心在于,数据库中存储的数据是否都是有效的.有 ...
- hdu1224SPFA求最长路加上打印路径
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1224/ 无负环. 代码如下: #include<bits/stdc++.h> using names ...
- 【2020-03-28】Dubbo源码杂谈
前言 本周空闲时间利用了百分之六七十的样子.主要将Dubbo官网文档和本地代码debug结合起来学习,基本看完了服务导出.服务引入以及服务调用的过程,暂未涉及路由.字典等功能.下面对这一周的收获进行一 ...
- 补充《解析“60k”大佬的19道C#面试题(上)》
[广州.NET技术俱乐部]微信群的周杰写了一篇文章<解析“60k”大佬的19道C#面试题(上)>https://www.cnblogs.com/sdflysha/p/20200325-19 ...
- tensorflow CNN 卷积神经网络中的卷积层和池化层的代码和效果图
tensorflow CNN 卷积神经网络中的卷积层和池化层的代码和效果图 因为很多 demo 都比较复杂,专门抽出这两个函数,写的 demo. 更多教程:http://www.tensorflown ...
- 【SQL SERVER】锁机制
锁定是 SQL Server 数据库引擎用来同步多个用户同时对同一个数据块的访问的一种机制. 基本概念 利用SQL Server Profiler观察锁 死锁产生的原因及避免 总结 基本概念 数据库引 ...