深入理解Java中的继承
对于面向对象的程序设计而言,每一个程序员都应该去了解Java中的封装,继承和多态,那么我今天来说的主要是以继承为核心的主题。
一.关于对继承的理解。
继承是面向对象的三大特性之一,是java中实现代码重用的重要手段之一。Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,及命名与父类同名的成员变量。但Java不支持多重继承,即一个类从多个超类派生的能力。
二.Java中继承的语法
修饰符 Dog extends Animal
{
//类定义部分
}
继承通过extends关键字来实现的,其中Dog称为子类,Animal称为父类,(基类或超类)。
三.子类可以继承到父类的哪些东西。
01.继承public和protected修饰的属性和方法,无论子类和父类是否在同一个包中。
02.继承默认权限修饰符(friendly)修饰的属性和方法,但子类和父类必须在同一个包中。
03.无法继承private修饰的属性和方法。
04.无法继承父类的构造方法。
四.访问修饰符访问权限。
五.子类满足重写父类方法的要求。
01.重写方法和被重写方法必须具有相同的方法名。
02.重写方法和被重写方法必须具有相同的参数列表。
03.重写方法的返回值类型必须和被重写方法的返回值类型相同或是其子类。
04.重写方法不能缩小被重写方法的访问权限。
六.重写方法和重载有什么区别和联系。
解析:重载涉及同一个类中的同名方法,要求方法名相同,要求参数列表不同,与返回值类型,访问修饰符无关,而重写涉及的是子类和父类之间的同名方法,要求方法名称相同,参数列表相同,
返回值类型相同,访问修饰符不能严于父类。
七.super关键字的用途。
super代表对当前对象的之前直接父类对象的默认引用。在子类中可以通过super关键字来访问分类的成员。
注意点:
01.super必须出现在子类(子类的方法和构造方法)中,而不是其他位置。
02.可以访问父类的成员,如父类的属性,方法,构造方法。
03.注意访问权限的限制,如无法通过super访问private成员。
八.抽象类
1.对于抽象类的理解:
01.在Java中当一个类被abstract关键字修饰时,该类就叫抽象类。
02.抽象类是从多个具体类中抽象出来的父类,属于高层次的抽象。
注意点:
01抽象类必须使用abstract关键字进行修饰。
02抽象类不能被实例化(无法使用new关键字创建对象实例)。
03抽象类可以包含属性,方法,构造方法,初始化块,内部类,枚举类。
04含有抽象方法的类必须定义成抽象类。
05.子类必须重写所有抽象方法才能实例化,否则子类还是一个抽象类。
eg:定义一个抽象类
publiic abstract Class Dog { }
2.抽象类中可以有构造方法吗?
解析:抽象类中可以有构造方法,其构造方法可以被本类的其他构造方法调用,若此构造方法不是有private修饰的,也可以被本类的子类中的构造方法调用。
深入理解Java中的继承的更多相关文章
- Java中的继承、封装、多态的理解
Java中的继承.封装.多态 继承的理解: 1.继承是面向对象的三大特征之一,也是实现代码复用的重要手段.Java的继承具有单继承的特点,每个子类只有一个直接父类. 2.Java的继承通过extend ...
- 深入理解Java中的IO
深入理解Java中的IO 引言: 对程序语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务 < Thinking in Java > 本文的目录视图如下: ...
- 十分钟理解Java中的动态代理
十分钟理解 Java 中的动态代理 一.概述 1. 什么是代理 我们大家都知道微商代理,简单地说就是代替厂家卖商品,厂家“委托”代理为其销售商品.关于微商代理,首先我们从他们那里买东西时通常不知道 ...
- JDK学习---深入理解java中的HashMap、HashSet底层实现
本文参考资料: 1.<大话数据结构> 2.http://www.cnblogs.com/dassmeta/p/5338955.html 3.http://www.cnblogs.com/d ...
- 夯实Java基础系列10:深入理解Java中的异常体系
目录 为什么要使用异常 异常基本定义 异常体系 初识异常 异常和错误 异常的处理方式 "不负责任"的throws 纠结的finally throw : JRE也使用的关键字 异常调 ...
- 关于Java中的继承和组合的一个错误使用的例子
[TOC] 关于Java中的继承和组合的一个错误使用的例子 相信绝大多数人都比较熟悉Java中的「继承」和「组合」这两个东西,本篇文章就主要就这两个话题谈论一下.如果我某些地方写的不对,或者比较幼稚, ...
- java中的继承与oc中的继承的区别
为什么要使用继承? 继承的好处: (1)抽取出了重复的代码,使代码更加灵活 (2)建立了类和类之间的联系 继承的缺点: 耦合性太强 OC中的继承 1.OC中不允许子类和父类拥有相同名称的成员变量名:( ...
- 理解Java中的弱引用(Weak Reference)
本篇文章尝试从What.Why.How这三个角度来探索Java中的弱引用,理解Java中弱引用的定义.基本使用场景和使用方法.由于个人水平有限,叙述中难免存在不准确或是不清晰的地方,希望大家可以指出, ...
- <Java中的继承和组合之间的联系和区别>
//Java中的继承和组合之间的联系和区别 //本例是继承 class Animal { private void beat() { System.out.println("心胀跳动...& ...
随机推荐
- 《TCP/IP详解卷1:协议》第17、18章 TCP:传输控制协议(1)-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- [工具]推荐一款查看dll依赖工具
引言 很久没写一篇像样的博客了,最近一个月一直忙于项目,也没时间去总结了,回到家,也就是看看书,没怎么总结.不过还是挺兴奋的,每天过得还算充实.这里也算是对五月份的一个总结吧. 为什么要查看dll 因 ...
- JavaScript基础系列目录(2014.06.01~2014.06.08)
下列文章,转载请亲注明链接出处,谢谢! 链接地址: http://www.cnblogs.com/ttcc/tag/JavaScript%20%E5%9F%BA%E7%A1%80%E7%9F%A5%E ...
- OC和Java的比较
1.Cocoa是什么?Cocoa是使用OC语言编写的工具包,里面有大量的类库.结构体,说白了其实就相当于java中的标准API.C++中的标准库.OC中没有命名空间的概念,所以使用加前缀来防止命名冲突 ...
- java日期加减
1.用java.util.Calender来实现 Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()) ...
- Jquery-处理iframe的高度自适应
超级简单的方法,也不用写什么判断浏览器高度.宽度啥的.下面的两种方法自选其一就行了.一个是放在和iframe同页面的,一个是放在test.html页面的.注意别放错地方了哦. iframe代码,注意要 ...
- Java设计模式-责任链模式(Chain of Responsibility)
接下来我们将要谈谈责任链模式,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求.但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任 ...
- 模式匹配KMP算法
关于KMP算法的原理网上有很详细的解释,我试着总结理解一下: KMP算法是什么 以这张图片为例子 匹配到j=5时失效了,BF算法里我们会使i=1,j=0,再看s的第i位开始能不能匹配,而KMP算法接下 ...
- jstl是自动就有的吗,不是的Unknown tag (c:if).
这个错误的原因就是没有导包 http://www.runoob.com/jsp/jsp-jstl.html 这个网站有方法
- POJ2299 Ultra-QuickSort
Description In this problem, you have to analyze a particular sorting algorithm. The algorithm proce ...