Java基础:(四)继承
2019-03-13 23:33:18来源:博客园 阅读 ()
一、访问权限
java中有三个访问权限修饰符private;protected;public和一个默认default(不加修饰符)。
如果子类的方法覆盖了父类的方法,那么子类中该方法的访问级别不允许低于父类的访问级别。这是为了确保可以使用父类实例的地方都可以使用子类实例,也就是确保满足里氏替换原则。
字段绝不能是共有的,因为这么做的话就失去了对这个字段修改行为的控制,客户端可以对其随意修改;可以使用共有的getter和setter方法来替换共有字段。
但是也有例外,如果是包级私有的类或者私有的嵌套类,那么直接暴露成员不会有特别大的影响。
public class AccessWithInnerClassExample { private class InnerClass{ //私有嵌套类 int x; } private InnerClass innerClass; public AccessWithInnerClassExample(){ innerClass = new InnerClass(); } public int getValue(){ return innerClass.x; } }
二、抽象类与接口
抽象类:
抽象类不一定包含抽象方法,抽象方法一定位于抽象类中;抽象类和普通类的最大区别是:抽象类不能被实例化,需要继承抽象类才能实例化其子类。
接口:
接口的成员(字段+方法)默认都是public的,并且不允许定义为private或者protected;
接口的字段默认都是static和final的(接口中无变量声明,只有常量,因为用了final修饰符);
接口的方法默认都是abstract的,从Java8开始,接口方法也支持default和static修饰,但是使用默认的方法和静态的方法必须有方法体。
public interface InterfaceExample { default void fun1(){ //默认方法 //这里是方法体,虽然没有语句 } static void fun2(){ //静态方法 //这里是方法体,虽然没有语句 } }
比较:
- 从设计层面上看,抽象类提供了一种 IS_A 关系,那么就必须满足里氏替换原则,即子类对象必须能够替换掉所有父类对象。而接口更像是一种 LIKE_A 关系,它只是提供一种方法实现契约,并不要求接口和实现接口的类具有 IS_A 关系(接口可以让不相关的类都实现一个方法);
- 从使用上看,一个类可以实现多个接口,但是不能继承多个抽象类;
- 接口的字段只能是static和final类型的,而抽象类的字段没有这种限制;
- 接口的方法只能是public的,而抽象类的方法可以有多种访问权限。
三、super
访问父类的构造函数:可以使用super()访问父类的构造函数,从而完成一些初始化的工作;
访问父类的成员:如果子类覆盖了父类中的某个方法的实现,可以通过使用super关键字来引用父类的方法实现。
四、重写与重载
重写存在于继承体系中,指子类实现了一个与父类在方法声明上完全相同的一个方法;
重载存在于同一个类中,指一个方法与已经存在的方法名称上相同,但是参数类型、个数、顺序至少有一个不同。(返回值不同,其他都相同不算是重载)
原文链接:https://www.cnblogs.com/liumilk/p/10523931.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash