JAVA学习继承与父类

类的继承
比如:在这里插入图片描述
继承
子类与父类的关系: Is-A
Base Class (基类)
Super (超类)
Parent (父类)

Derived Class (派生类)
Sub (副类)
Child (子类)

类的继承
• 子类继承父类的
• 成员变量和成员函数
• 可以修改父类的成员变量或覆盖父类的成员函数
• 在父类的基础上添加新的成员变量和成员函数
•继承用来为is-a关系建模,子类和父类之间必须存在is-a关系。
** Java语言只支持单继承**
• 每个子类只允许一个父类,使得代码更加可靠,不会出现因多个父类有相同
的方法或属性所带来的麻烦。
• 如果要定义多继承,可以使用“接口”

语法:
创建子类
• 格式
[修饰符] class 子类名 extends 父类名{类体}
说明:
子类能够访问父类中public和protected成员变量和成员函数;
如果子类和父类在同一个包内,子类能访问父类中用默认修饰符修饰的成员变量和成员函数;
一般情况下,子类不能访问父类中的private成员变量和成员函数
若缺省extends子句,则该类为java.lang.Object的子类

类的继承:访问控制
• public: ✓ 修饰的成员变量称为公共变量,可以被项目文件中的任何函数访问。 ✓ 由于public成员变量不受限制,这易使类的对象引起不希望的修改,破坏系统的封装性,建
议成员变量尽量不要使用public修饰符;
• protected: ✓ 修饰的成员变量称为保护变量,可以被有继承关系的类自由访问,即子类可以访问它; ✓ 也可以由同一个包中的其它类访问。 • private: ✓ 修饰的成员变量称为私有变量,只能被定义它的类使用,而不能被其他任何类使用。 ✓ 这种方式通常是最安全的,通常使用该修饰符实现数据的封装 • friendly: ✓ 只有这个类自己以及同一个包内的类可以访问

子类

class SuperClass { 
public int a=1; 
protected int b=2;
 private int c=3; 
 int d=4; }

父类:

class SubClass extends SuperClass { public void main(String args[]) { 
SubClass o1=new SubClass();
 o1.a=1; 
 o1.b=2; 
 o1.c=3; 
 o1.d=4; 
 } }
 

同名成员变量:
如果子类声明了一个与父类中的成员变量同名的成员变量,则子
类存在两个同名成员变量
在这里插入图片描述
构造函数:
父类的构造函数并不传给子类,它们只能从子类的构造方法中通过关键字super
调用。
调用父类的构造方法必须使用关键字super,并且这个调用必须是构造方法的第
一条语句。在子类中使用父类构造方法的名字会引起语法错误

关键字super
• 通过super来实现对父类成员的访问,super用来访问父类中的函数和变量,主要是
用于访问被隐藏的成员变量或者被覆盖的函数
• 使用情况
• 访问父类被隐藏的成员变量,其引用格式为:
super.成员变量名
• 调用父类被重写的函数,其引用格式为:
super.函数名([参数列表])
• 调用父类的构造函数,其引用格式为:
super([参数列表])

this和supper:
this:
可以出现成员函数和构造函数中,但不可以出现在类函数中。因为类函数可
以直接通过类名直接调用,这时可能还没有任何对象诞生。
• this可以出现在类的构造函数中,代表使用该构造函数初始化的对象。
super:
用来访问父类被隐藏的成员变量,调用父类构造函数和被覆盖的成员函数。

总结:
继承的最大好处就是类的可重用性。
• 当创建自己的类时,应尽可能将它作为某一个类的子类,在自己
的子类中加入一些特殊的内容,而不必重新定义这个类所需的全
部属性和行为。
• 初始化过程总是由高到低
• 资源回收过程应从低到高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值