JAVA-继承机制学习总结

JAVA-继承机制学习总结

知识点包括:子类的定义、子类的继承性、使用子类对象(子类对象能访问哪些成员变量,调用哪些方法)

子类的定义

一、子类的定义

首先,要了解子类的定义,得先了解继承是什么:继承是一种由已有的类创建新类的机制。利用继承,可以先定义一个共有属性的一般类,根据该一般类再定义具有特殊属性的子类,子类继承一般类的属性和行为,并根据需要增加它自己的新的属性和行为。

那么,由继承得到的类就被称为子类,被继承的类称为父类(超类)

注意:java里子类只能有一个父类,一个类可以有多个或零个子类

在类的声明中,通过使用_关键字extends_来定义一个类的子类:

把Student类定义为People类的子类,People类是Student类的父类(超类)

(若一个类(除了Object类)的声明中没有使用extends关键字,这个类被系统默认为是Object的子类)

子类的继承性

二、子类的继承性

子类继承父类的成员变量(方法)作为自己的成员变量(方法),就像是它们在子类中直接声明(定义)一样,可以被子类中自己定义的任何实例方法操作。

且子类的继承性可以分为两类:

1、子类与父类在同一个包内的继承性

2、子类与父类不在同一个包内继承性

下面分别介绍这两类继承性:

①在同一包内:子类继承父类中不是private的成员变量(方法)作为自己的成员变量(方法),继承的成员变量或方法的访问权限保持不变。

例:Student类(子类)与People类(父类)在同一个包(javawork)内




testS类也在同一个包内


可以看出,子类和父类在同一个包内的时候,子类是可以访问父类的除了private的成员变量(方法)的

②不在同一包内:当子类与父类不在同一包内时,子类只能继承父类的protected和public访问权限的成员变量(方法)

当People类与Student类和testS类不在同一包内时:



那么在Student类里面,如果创建一个对象,那么该对象总是可以通过“.”运算符来访问继承的或自己定义的protected变量和protected方法的


但是,在testS类中,用Student类创建的对象a,是不可以访问Student类从People类继承下来的受保护型的成员变量或方法的。

可以看到,这里是有报错的提示的


但如果我们把testS类与People类放在同一个包内:


可以看到,刚才的报错提示已经消失,但是还是存在一个报错提示。Tellnum是Student类的受保护型的方法。这说明,一旦testS与Student类不在同一个包内后,就不可以访问它的受保护型的成员变量或者方法了。

所以可以总结出来在Other类中用A类创建的一个对象a,该对象通过“.”运算符访问protected成员变量和protected方法的权限如下所述:

1、对于A类自己声明的protected成员变量和方法,只要Other类和A类在同一个包中,a对象就可以访问这些protected成员变量和方法

2、对于子类A从父类继承的protected成员变量或方法,需要追溯到这些protected成员变量或方法所在的“祖先”类,例如可能是D类,则只要Other类和D类在同一个包中,a对象就能访问继承的protected成员变量和方法。

(PS:本文是上学期学习Java时总结的一个学习报告,若有错误欢迎指正)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值