前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java 继承 test

java 继承 test

作者头像
Cell
发布2022-02-25 16:17:28
5880
发布2022-02-25 16:17:28
举报
文章被收录于专栏:Cell的前端专栏

Quote

继承的好处:

  1. 提高了代码的复用性
  2. 提高了代码的维护性
  3. 让类与类之间产生了关系,是多态的前提

继承的弊端:类的耦合性很强

设计原则:低耦合,高内聚。

  • 耦合:类与类的关系。
  • 内聚:自己完成事情的能力。

java 中的继承特点

Java 只支持单继承,不支持多继承。Java 支持多层继承(继承体系)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

class A { } class B extends A { } /* class C extends A,B { } */ class C extends B { } class ExtendsDemo { public static void main(String[] args) { } }

java 中的继承注意事项

  1. 子类只能继承父类所有非私有的成员(成员方法和成员变量)
  2. 子类不能继承父类的构造方法,但是可以通过 super 关键字去访问父类构造方法。
  3. 不要为了部分功能而去继承

那么,我们什么时候考虑使用继承呢? 继承中类之间体现的是:”is a”的关系。 如果两个类满足这个关系:xxx is a yyy,那么他们就可以使用继承。

1 2 3

Student,Person 对 Dog,Animal 对 Dog,Pig 错

继承

继承间的构造方法关系:创建子类对象,会先去访问父类的构造方法。对父类的数据进行初始化。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

package jicheng; class Fu{ public int num = 10; public Fu(){ System.out.println("父类"); } } class Zi extends Fu{ public int num = 20; public Zi(){ System.out.println("子类"); } public void show(){ int num = 30; System.out.println(num);//30 System.out.println(this.num);//20 System.out.println(super.num);//10 } } public class test { public static void main(String[] args) { Zi z = new Zi(); z.show(); } }

程序运行结果

1 2 3 4 5

父类 子类 30 20 10

代码块

代码块的执行顺序: 静态代码块 –> 构造代码块 –> 构造方法 代码的执行特点:静态代码块只执行一次,构造代码块每次调用构造方法都执行。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

package jicheng; class Fu { static { System.out.println("父类静态代码块"); } { System.out.println("父类构造代码块"); } public Fu() { System.out.println("父类构造方法"); } } class Zi extends Fu { static { System.out.println("子类静态代码块"); } { System.out.println("子类构造代码块"); } public Zi() { System.out.println("子类构造方法"); } } public class test { public static void main(String[] args) { Zi z = new Zi(); Zi z2 = new Zi(); } }

程序运行结果:

1 2 3 4 5 6 7 8 9 10

父类静态代码块 子类静态代码块 父类构造代码块 父类构造方法 子类构造代码块 子类构造方法 父类构造代码块 父类构造方法 子类构造代码块 子类构造方法

继承间的成员关系

  • 成员方法 不同名称: 非常简单,一看就知道调用谁 相同名称: 先在子类找,再在父类找 … 找不到就报错。
  • 成员变量: 名字不同: 非常的简单,一看就知道使用的是谁。 名字相同: 就近原则。

使用变量的时候,会先找局部范围。 如果想直接使用成员变量,加关键字:this 即可。 如果想直接使用父类的成员变量,加关键字:super 即可。

注意事项

子类中所有的构造方法默认都会访问父类中空参数的构造方法。为什么呢?因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java 中的继承特点
  • java 中的继承注意事项
  • 继承
  • 代码块
  • 继承间的成员关系
  • 注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档