Java继承相关知识总结
Java继承的理解
一、概念:
- 一个新类从已有的类那里获得其已有的属性和方法,这种现象叫类的继承
- 这个新类称为子类,或派生类,已有的那个类叫做父类,或基类
- 继承的好处:代码得到极大的重用、形成一种类的层次体系结构、为多态创造条件
- 子类的所有方法内部都可以访问父类私有成员以外的所有成员,所谓子类的所有方法也包括子类的私有方法
- 通过子类对象名可以访问:
- 父类除私有成员外的所有成员
- 子类本身的除私有成员外的所有成员
- 子类可以继承父类除私有成员以外的所有成员
- 父类的私有成员不可以被子类继承,其他的成员都可以被子类继承
二、继承的访问修饰符作用域
访问修饰符的作用域:
三、继承的特征
- Java只支持单继承,不允许多重继承 ※提供多重继承机制。从理论上说,一个类可以是多个一般类的特殊类,它可以从多个一般类中继承属性与方法,这便是多重继承。Java出于安全性和可靠性的考虑,仅支持单重继承,而通过使用接口机制来实现多重继承。
- 单继承就是一个类只有一个父类
- 可以有多层继承,即一个类可以继承某一个类的子类
- 子类可以继承父类所有的成员变量和成员方法,但子类永远没法继承父类的构造方法。在子类的构造方法中可以使用super(参数列表)调用父类的构造方法
四、使用实例
/*
super的使用
*/ class A
{
A()
{
System.out.println("AAAA");
} A(int i)
{
}
} class B extends A
{
B()
{
super(2); //如果把该语句注释掉的化,则编译器默认的是自动隐藏调用super(); 但如果父类没有无参的构造函数,则会报错
//一个子类的构造函数中只能出现一个 super(....)
System.out.println("BBBB");
}
} class C extends B
{
C()
{
//int k = 10; //如果该语句生效 则会出错,因为会导致super()语句不是构造函数的第一条语句 super(); //35行 每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有无参的构造函数,那么在编译的时候就会报错。
//super();语句可以写,也可以不写,不写的化,系统会自动调用的
//如果显示写出来的话,编译器要求该语句前面不能加任何语句,也就是说该语句必须保证是第一条语句
// super()也可以改为super(2); 但前提是父类必须有带一个参数的构造函数,否则也会报错
//如果把35行改为 super(2); 编译时就会报错! System.out.println("CCCC");
}
} class TestSuper_1
{
public static void main(String[] args)
{
C cc = new C(); //System.out.println("Hello World!");
}
}
/*
在j2sdk1.4.2_16中的运行结果是:
-----------------------
BBBB
CCCC
----------------------- 总结:
1、每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的
构造函数,那么在编译的时候就会报错。 2、如果显示的写出super();语句,则必须保证该语句是第一条语句,否则会出错 3、super();如果不写,则编译器会自动添加,所以此时如果父类没有无参的构造函数就会出错 4、既可以显示写super();前提是父类必须有无参的构造函数
也可以显示写super(实参); 前提是父类必须有带参的构造函数 5、调用父类的构造函数的语句必须借助于super,不能直接写父类的类名,这与C++不同 6、一个构造函数中不能写多个super(参数列表)语句
*/
Java继承相关知识总结的更多相关文章
- Java 容器相关知识全面总结
Java实用类库提供了一套相当完整的容器来帮助我们解决很多具体问题.因为我本身是一名Android开发者,包括我在内很多安卓开发,最拿手的就是ListView(RecycleView)+BaseAda ...
- 【转】java NIO 相关知识
原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...
- 4)Java容器类相关知识
1>Array 和 Arrays: Arrays:用来操作array的工具类,其中包含一组static函数: equals():比较两个array 是否相等. array拥有相同元 ...
- Java异常相关知识总结
异常: 概述:java程序运行过程中出现的错误 常见的异常: StackOverflowError ArrayIndexOutOfBoundsException NullPointerExceptio ...
- Java枚举相关知识
JAVA枚举 很多编程语言都提供了枚举的概念,但是java直到1.5之后才提出了枚举的概念,出现比这个语言本身晚10年. 主要作用是用于定义有限个数对象的一种结构(多例设计),枚举就属于多例设计并且其 ...
- Java多线程相关知识
1)wait() notify() sleep() sleep是Thread类的函数,wait和notify是Object的函数. sleep的时候keep对象锁,wait的时候release 对 ...
- Java GC相关知识
Java堆的分类 分为两类:YoungGen和OldGen.其中,YoungGen分为三部分:eden,from survivor和to survivor,比例默认是:8:1:1 PermGen不属于 ...
- Java——接口相关知识
1.接口用interface来声明 //定义一个动物接口 public interface Animal{ public void eat(); public void travel(); } 2.接 ...
- 「万字图文」史上最姨母级Java继承详解
摘要:继承是面向对象软件技术中的一个概念.它使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用. 本文分享自华为云社区<「万字图文」史上最姨母级Java继承详解丨[奔跑吧!JAVA] ...
随机推荐
- remove unusable kernel in linux.
dpkg --get-selections | grep linux-image 1933 sudo apt-get remove linux-image-extra-4.4.0-57-generi ...
- linux环境下python的部署
linux系统环境自带python2.6,但有时我们项目使用的版本可能是3.x以上等等,此时我们需要在linux中再安装项目所需的python版本,此时就涉及多版本共存问题了,很多同学在安装多个版本P ...
- 通过phantomjs 进行页面截图
本文章参考了使用phantomjs操作DOM并对页面进行截图需要注意的几个问题 及phantomjs使用说明 这两篇文章,初次接触phantomjs的童鞋可以去看下这两篇原文 在学习中可以看下 pha ...
- Python一键安装全部依赖包
requirements.txt用来记录项目所有的依赖包和版本号,只需要一个简单的pip命令就能完成. pip freeze >requirements.txt 然后就可以用 pip insta ...
- 使用pssh进行并行批量操作
假如同时给上千台服务器执行一个命令,拷贝一个文件,杀一个进程等,有什么简化运维管理的工具呢?在小型使用中我都是使用for循 环,数量巨大,一方面不确定操作是否成功,一方面for循环语句性能不好估计且是 ...
- 关闭WPS启动时显示的在线模板
关闭WPS启动时显示的在线模板 以WPS2016为例,如下图: 操作步骤如下: ①点击在线模板页面右下方的"设置"选项 ②"设置"界面打开后,选择启动WPS默认 ...
- web api 获取传过来的Json
public async void PostOrder(HttpRequestMessage request) { String responseBodyAsText = await request. ...
- sublime Text3在mac下设置窗口实现多标签
打开Sublime Text3,点击左上角的Sublime Text3按钮,然后选择“Preferences”里面的“Settings-user” 在打开的配置文件里面,加入下面图中的这句代码即可&q ...
- c++虚函数实现机制(转)
前言 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数.这种技术可以让父类的指针有“多种形态”,这是一种泛 ...
- Linux系统——Nginx反向代理与负载均衡
集群集群是指一组(若干个)相互独立的计算机,利用高速通信网路组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运用各自服务的独立服务器.这些服务器之间可以彼此通信,协同向用户提供 ...