浅谈Java三大特性之继承
前言
类的继承性是面向对象语言的基本特性,多态性前提是继承性。Java 支持继承性和多态性。——Java从小白到大牛
继承:三大特性之一,关键词:extends
简单用伪代码去介绍一些
假设需要定义个student类
public class Student{
private String name;//名字
private int age;//年龄
private int sex;//性别
}
再来个需求,需要定义一个学生Andy,不用继承时候,需要一个个去定义;
public class Andy{
private String name;
private int age;
private int sex;
private String country;//新增一个国家信息
}
从上面看两者有着很多的相似的重复定义的东西,如果使用继承去写这段代码就可以如下:
public class Andy extends student{
private String country
}
所以从上面可以看出类的继承大致用途,Andy类已经继承了Student类,上面的父类便是student,extends后面跟着的。继承的时候,要明确指出,要不然就是在Java标准根类Object进行继承。
再者,在继承的过程中,除了你可以在新的类中去添加东西,也不一定非得使用基类的方法属性等。
还可以有多层继承关系(下面的输出是随便定义的伪代码,可以是直接输出某一些语句,方便运行查看)
class Art{
Art(){输出1}
}
class Music extends Art{
Music(输出2)
}
class Dance extends music{
public Dance(){输出3}
public static void main(String args[]){
dance x = new dance();
}
}
//输出的顺序是1 2 3
父类与子类的构造函数问题
若不在类中定义构造函数,会默认生成一个无参的函数构造器,如果有了就不会。(构造器即构造函数,与类同名,在初始化的时候就被调用,,默认的构造函数是不带任何参数的)
class Art{
}
//等同于下面
class Art{
public Art(){
//
}
}
super关键字
Java用super表示超类的医生,当前类是从超类继承来的。
class Game{
int h;
Game(int i){//构造函数
System.out.println("this is a game!");
}
public static void printg(int d){//普通函数
System.out.println("12");
}
}
class ballGame extends Game{
ballGame(int i){
super(i);//调用父类的构造器,漏了这句就会报错,显示there is no default constructor available
System.out.println("ballGame is coming!");
super.h = 3;//访问父类的属性
}
}
super可以用于访问父类定义的属性,用于调用父类中的成员方法,super代表父类的内存空间。可以访问父类的父类
class Game{
int h;
Game(int i){//构造函数
System.out.println(i);//输出
System.out.println("第一层");
}
public static void printg(int d){//普通函数
System.out.println("1");
}
}
class ballGame extends Game{
ballGame(int i){
super(i);//调用父类的构造器
System.out.println("第二层");
super.h = 2;//访问父类的属性
}
}
public class jichengSuper extends ballGame{
jichengSuper(int b) {
super(b);//调用的是上面父类的构造函数,将输出3
int a = super.h ;//将第二层里的3赋值给a
System.out.println(a);//打印
}
public static void main(String args[]){
new jichengSuper(3);//这里的3将代进去上面的构造函数jichengSuper中
System.out.print("最后一层");
}
}
/**
*output:
3
第一层
第二层
2
最后一层
*/
接口在实现的时候,在类中一定要实现接口的抽象方法
而继承不用,想要用哪个再用
others
可以有多个接口但是只能有一个继承。一般情况下,一个子类只能继承一个父类,这称为“单继承”,但有的情况下一个子类可以有多个不同的父类,这称为“多重继承”。在Java中,类的继承只能是单继承,而多重继承可以通过实现多个接口实现。
浅谈Java三大特性之继承的更多相关文章
- 浅谈Java三大特性
Java三大特性想必大家都不陌生:封装.继承以及多态.很多刚接触Java的小伙伴都会想,它们到底有什么了不得之处,又赋予Java这门编程语言什么魔力呢?今天我们来探讨一下吧~~ 首先,名词解释: 封装 ...
- 浅谈Java三大特性之封装
目录 前言 好处 介绍(实现方式) 示例 小结 感谢阅读!!! 三大特性之浅谈封装 前言 英语:Encapsulation--封装,包装. 面向对象的封装与真实世界的目的是一样的.封装能够使外部访问者 ...
- 浅谈Java三大特性之多态
目录 一.前言 二.发生的条件 三.多态包含(或者说体现在)两个方面: 四.示例 感谢阅读 一.前言 这篇讲下三大特性之一的多态,可以通俗得去理解,多种形态,多种姿态... 那么在面向对象的程序设计中 ...
- Java三大特性(封装,继承,多态)
Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...
- java 三大特性_继承、封装、多态_day005
一.继承: java的三大特性之一.两个类之间通过extends关键字来描述父子关系,子类便可拥有父类的公共方法和公共属性.子类可以继承父类的方法和属性,子类也可以自己定义没有的方法或者通过覆盖父类的 ...
- 浅谈Java三大框架与应用
前言:对于一个程序员来说,尤其是在java web端开发的程序员,三大框架:Struts+Hibernate+Spring是必须要掌握熟透的,因此,下面谈谈java三大框架的基本概念和原理. JAVA ...
- Java三大特性之继承
二.类的继承 1. 概念:从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并能扩展新的能力. 2. 一个不由任何类派生出来的类称为基类,一个派生类最近的上层类称为该类的父类,从某一类派生出来 ...
- java提高篇(二)-----理解java的三大特性之继承
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
- java提高篇(二)-----理解java的三大特性之继承
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
随机推荐
- SQLAlchemy -高级查询
查询 # -*- coding: utf-8 -*- from sqlalchemy.orm import sessionmaker from SQLAlchemy.create import ...
- 修改vsftpd的默认根目录/var/ftp/pub到其他目录
修改ftp的根目录只要修改/etc/vsftpd/vsftpd.conf文件即可: 加入如下几行: local_root=/var/www/html chroot_local_user=YES ano ...
- Apollo安装教程
最近一直在研究Apollo的安装问题,浪费了几天时间,所有特意来记录一下安装心得. UBUNTU 14.04安装 这个我是把自己的笔记本全部转换为ubuntu系统,操作相对简单,大家可以自行查找,另外 ...
- Spring - jdbcTemplate - 调试代码: PreparedStatementCreator 生成的语句, update 之后没有 自增id, 已解决
1. 概述 解决 jdbcTemplate 下, update 结果不带 自增id 的问题 2. 场景 看书 Spring in Action 5th 3.1.4 listing 3.10 saveT ...
- python的datetime库
datetime 库 简介 获取时间 主要提供程序计时器 基本使用
- 【网搜】禁止 number 输入非数字(Android仍有问题)
目的:使用 number 表单,让其只可输入数字. 问题:ios 可正常限制,Android 仍可输入 [ e | . | - | + ] 这4个字符.猜测这4个字符在数值中为科学记数.小数 ...
- 你所了解的Java线程池
在jvm中,线程是一个宝贵的资源,创建与销毁都会抢占宝贵的内存资源,为了有效的重用线程,我们用线程池来管理线程,让创建的线程进行复用. JDK提供了一套Executor框架,帮助我们管理线程,核心成员 ...
- wordpress 不用插件添加友情链接
哎,也不知道为啥,网上说的那个link manager这个插件死活找不到啊, 找了一个类似的,但是不是,这么多的英文看了好几遍才发现不是 然后从大神哪里找到一个好方法 在你用的那个主题的functio ...
- EditPlus 注册码在线生成
虽然editplus现在不常用,但是它轻便,我还是很喜欢的,推荐一个注册码生成器,真是好好用 http://www.jb51.net/tools/editplus/ 点击链接输入自己想要的用户名,就能 ...
- python 的集合
set 的特点: 把不同的元素组合在一起,元素值必须是可哈希不可变的 set 的创建 s = set ('alex li') print(s) 表现形式:去重 {'e', 'i', ' ', 'l' ...