Java基础 继承

“简单不先于复杂,而是在复杂之后.” —— Alan Perlis

2.jpg

继承

  • 为什么要继承

说到OOP(面向对象)的特点,就不得不提继承,他使代码拥有了其他非OOP所没有的一种独特性---可复用性。
当你先创建了一个类之后,再创建一个新类,即使他和你之前的类有相似的功能,你还是需要重新编写此类。然而通过继承,你也许可以不这么做。


  • 继承确定了一种关系

在继承关系里,被继承的类被称为父类,而继承的类就被称为子类。子类继承了父类所有的属性(尽管private成员被隐藏起来,并且不可访问)和方法,不仅如此,子类还可以根据自己的独特性,扩展属性和方法。

代码
class Person {
    public Person() {

    }
}

class Man extends Person {
    public Man() {

    }
}

类Man继承于Person类,这样一来的话,Person类称为父类(基类),Man类称为子类(导出类)。如果两个类存在继承关系,则子类会自动继承父类的方法和变量,在子类中可以调用父类的方法和变量。在java中,只允许单继承,也就是说 一个类最多只能显示地继承于一个父类。但是一个类却可以被多个类继承,也就是说一个类可以拥有多个子类。


子类继承父类的成员变量

当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:

1.能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;

2.对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;

3.对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。


子类继承父类的方法

1.能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;

2. 对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;

3.对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用


重写父类方法
  • 注意事项

子类方法访问权限大于等于父类方法权限;
子类可以访问父类被重写的方法.


继承特点:
  • 单继承

单继承和多继承各自的优缺点:
  • 多继承复用性更高,单继承复用性低;
  • 多继承关系复杂且有菱形缺陷,单继承没有;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 继承的概念 继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如公司中的研发部员工和维...
    _我不喜欢吃芋头阅读 250评论 0 0
  • 类的继承格式 通过extends关键字来实现 一、为什么需要继承 有一些类有共同的地方,容易出现代码冗余,所以我们...
    阿敏其人阅读 2,444评论 0 3
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,715评论 0 11
  • 1.什么是继承 把多个类中相同的成员给提取出来定义到一个独立的类中.然后让这多个类和该独立的类产生一个关系. 2....
    王子也寂寞阅读 188评论 2 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,803评论 18 399