Java程序设计入门教程--继承的特点

目录

继承 

创建子类

继承的定义格式

属性的继承

错误示例程序

子类变量隐藏父类变量


继承 

       继承是存在在于面向对象编程中的两个类之间的一种关系。
        当一个类具有另一个类的所有数据和方法的时候,就称这两个类之间具有继承关系。
        被继承的类称为父类或超类,继承了父类或超类数据和方法的类称为子类。

 

举例

        继承的关系很好地描述了现实世界中事物间存在的联系。

        比如考虑轮船和客轮这两个类。轮船具有吨位、时速、吃水线等属性(数据),并具有行驶、停泊等行为(方法);客轮在具有轮船的全部属性与行为的同时,又有自己的特殊属性(如载客量)和服务(如供餐等)。若把轮船看做父类,则客轮就是轮船的子类,对这组父子类的关系作上下扩展,则可得到如下图所示的层次关系图。

 继承具有下述特点:

1. 继承关系是传递的。若类C继承类B,类B继承类A时,则可认为类C也继承了类A,即类C具有类A中的属性和方法,也具有类B特有的属性和方法。继承来的属性和方法尽管是隐式的,却仍是类C的属性和方法。继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。

2. 提供软件复用功能。若类B继承类A,建立类B时只需要再描述与基类(A)不同的少量特征(数据成员和成员方法)。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。

3. 增强一致性。用来减少模块间的接口和界面,大大增加程序的易维护性。

4. 单一继承机制。Java出于安全性和可靠性的考虑,仅支持单继承,但可实现多接口。

创建子类

继承的定义格式

       Java中继承关系是通过extends关键字来实现的。

       在定义类时使用extends关键字指明新定义类的父类,新定义的类称为指定父类的子类,这样就在两个类之间建立了继承关系。

       extends关键词应用的格式如下:        

         class  subClass_name  extends  superClass_name

       继承机制最大的特点就是允许子类继承父类中的属性和方法。

         继承关系示例程序。(子类SubClass继承了父类SuperClass的两个成员变量ab以及一个方法fn1(),且子类本身新定义了一个成员变量c和方法fn2(),因此,子类当前共有3个成员变量和两个方法。

  

代码如下:

父类:

package test;

public class SuperClass {
	int a = 10;
	String b = "test";
	public int fn1(){
		return a;
	}
}

子类: 

package test;

public class SubClass extends SuperClass {
	int c = 20;
	public int fn2(){
		return c;
	}
}

主程序输出: 

package test;

public class JavaDemo {
	public static void main(String[] args) {
		SuperClass sup = new SuperClass();
		SubClass sub = new SubClass();
		
		System.out.println("父类:"+sup.a+" "+sup.b+" "+sup.fn1());
		System.out.println("子类:"+sub.a+" "+sub.b+" "+sub.c+" "+sub.fn1()+" "+sub.fn2());
	}
}

 

 

属性的继承

       父类的属性(包括所有成员变量和方法)都将被子类所继承,但被继承并不等于就一定能被访问。
       在Java中,只有非私有型(public型、或缺省型)的变量和方法能被同包子类所继承并直接访问,而对于父类中私有型(private型)的属性,子类将无权直接访问。


错误示例程序

私有属性继承。子类SubClassfn3()里越权访问了父类中的私有变量d,产生编译错误。

 

子类变量隐藏父类变量

       子类还可以对父类继承来的属性(成员变量)重新定义。

       简单地说,就是子类变量隐藏父类变量。当子类执行自身定义的方法时,操作的是自己重新定义的变量,隐藏父类继承来的变量。当子类执行父类继承来的方法时,若需要使用同名的成员变量,所使用的是父类的成员变量。

        隐藏变量示例程序。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信知阁

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值