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 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大 ...
随机推荐
- 搭建Java开发环境之配置环境变量
前言 初学Java不久的二胖在搭建Java开发环境一步就遇到问题,他不由得感叹:万事开头难啊!但感叹之后它还是鼓足了劲去努力解决它,二胖在电脑上Google了一番,最终环境是搭建成功了,但他心中对&q ...
- 什么是yarn,如何使用yarn安装项目依赖
一.yarn的简介: Yarn是facebook发布的一款取代npm的包管理工具. 二.yarn的特点: 1.速度超快. Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载. 同时利用并行下载 ...
- Python习题集(二)
每天一习题,提升Python不是问题!!有更简洁的写法请评论告知我! https://www.cnblogs.com/poloyy/category/1676599.html 题目 a = [1, 2 ...
- javaweb_HTML
第一章:网页的构成 1.1概念:b/s与c/s 1.1.1 现在的软件开发的整体架构主要分为B/S架构与C/S架构: b/s:浏览器/服务器 c/s:客户端/服务器 客户端:需要安装在系统里,才可使用 ...
- 一些Nmap NSE脚本推荐
前言 Nmap是一款强大的开源扫描工具.同时Nmap提供了强大的脚本引擎(Nmap Scripting Engine),支持通过Lua脚本语言来扩展Nmap的功能,在Nmap的发行版中已经包含了数百个 ...
- MacOS下的渗透测试工具
信息收集工具 工具名称 安装命令 CeWL brew install sidaf/pentest/cewl dirb brew install sidaf/pentest/dirb dnsrecon ...
- RoBERTa
2019-10-19 21:46:18 问题描述:谈谈对RoBERTa的理解. 问题求解: 在XLNet全面超越Bert后没多久,Facebook提出了RoBERTa(a Robustly Optim ...
- Mysql性能优化:什么是索引下推?
导读 索引下推(index condition pushdown )简称ICP,在Mysql5.6的版本上推出,用于优化查询. 在不使用ICP的情况下,在使用非主键索引(又叫普通索引或者二级索引)进行 ...
- "xaml+cs"桌面客户端跨平台初体验
"Xaml+C#"桌面客户端跨平台初体验 前言 随着 .Net 5的到来,微软在 .Net 跨平台路上又开始了一个更高的起点.回顾.Net Core近几年的成果,可谓是让.Ne ...
- OpenCV-Python BRIEF(二进制的鲁棒独立基本特征) | 四十二
目标 在本章中,我们将看到BRIEF算法的基础知识 理论 我们知道SIFT使用128维矢量作为描述符.由于它使用浮点数,因此基本上需要512个字节.同样,SURF最少也需要256个字节(用于64像素) ...