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] ...
随机推荐
- $("this") $(this) 区别
1.$("this")是使用标签选择器,查找名为this的标签2.$(this)取出当前对象并转换为jQuery对象3.$(this)是jquery对象,能调用jquery的方法, ...
- LoadRunner-循环
Edit Runtime Settings ,设置循环次数 在Open Parameter List 里设置循环参数,比如用例为删除notice,每执行一次用例id值不同. 把id替换为参数,并在参数 ...
- (4.15)存储DAS,NAS,SAN在数据库存储上的应用
关键词:存储,硬盘接口类型,磁盘类型,网络类型,DAS,DNS,SAN 转自:http://blog.51cto.com/qianzhang/1254617 一. 硬盘接口类型 1. 并行接口还是串行 ...
- 为帝国cms模板添加站内搜索小教程
由于客户的需要,最近都在整帝国cms,很多东西还是不熟悉,特别是帝国cms模板,以前用的那些网站模板一般是保存在ftp文件中,而帝国cms模板是直接保存在数据库中,修改是在网站后台的模板管理,得慢慢适 ...
- spring boot上传 下载图片。
https://blog.csdn.net/a625013/article/details/52414470 build.gradle buildscript { repositories { mav ...
- [py][mx]django城市-教学机构-教师模型设计
分析下城市-教学机构-教师模型设计 CourseOrg 课程信息 Teacher 教师信息 CityDict 城市信息 代码 from datetime import datetime from dj ...
- Py-lamda表达式学习【转载】
转自:https://blog.csdn.net/zjuxsl/article/details/79437563 1.语法定义 在Python中,lambda的语法是唯一的.其形式如下: lambda ...
- yum && 编译 安装mysql 5.7 多实例
yum安装 [root@localhost ~]# wget http://repo.mysql.com/mysql57-community-release-el7.rpm [root@localho ...
- #C++初学记录(ACM试题2)
Max Sum Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-seq ...
- Perl中的正则表达式(五)
正则表达式(Regular Expression),在Perl里边通常也叫做模式(Pattern),用来表示匹配(或不匹配)某个字符串的特征模板. 使用简单模式:若模式匹配的对象是$_的内容,只要把模 ...