Java面向对象程序设计2

四、静态成员

类中有一种特殊的成员,他不属于某一个单独的对象,而是属于整个类所有。另外,Java中static不可以用来修饰局部变量。静态成员函数只能访问静态成员变量。

五、类的继承

如果要扩展原有的程序的功能,可以对原来的类进行修改或增加一个新类,但是这样就不符合开闭原则了。同时,也会影响原来的类的相关代码,或者造成代码的重复。

一种好的方法是通过继承来重用已有的代码,同时增加新的代码来进行功能的扩展。

继承是面向对象设计的重要方法,被继承的类称为超类,从超类派生的新类称为子类。子类中包含两个部分,一个是从超类中继承下来的变量和方法,一个是自己新增加的方法和变量。

Java中只支持单重继承,不支持多重继承,所以一个类只能有一个超类。

  • 声明子类

[修饰符]class 子类名 extends 超类名

{...}

子类的对象也是超类的对象,超类的对象不一定是子类的对象。

成员变量的继承规则:子类只继承超类中非private的部分;

     隐藏原则(hiding):子类的成员变量和超类的成员变量同名的时候,超类的成员变量被隐藏。

成员方法的继承规则:子类只继承超类中非private的部分;

       覆盖原则(Override):子类的成员方法和超类的成员方法同名的时候,超类的成员方法被子类的成员方法覆盖。

  • 子类的构造方法

在调用子类的构造方法的时候,需要先调用超类的构造方法,子类的构造方法的参数的前面几个,是给超类的构造方法使用的。在子类的构造方法体中,使用super进行显示的调用超类的构造方法,并将此语句放在构造方法体的最前面。如果超类中有默认的构造方法,那么在子类的构造方法中,可以不显示的调用超类的构造方法。

  • null,this,super

null:表示空对象,即没有创建类的任何实例。

this:代指当前的对象,是对象的引用。访问本类的成员,this.<变量名>,this.<方法名>,调用本类的构造方法this(参数表);

super:超类的引用,可以使用super来引用被子类屏蔽的超类的成员,super.<变量名>,super.<方法名>,调用超类的构造方法super(参数表);

六、类的多态性

多态是指同一名称,多种实现。多态的实现主要通过重载(overloading)和覆盖(override)来完成。

  •  重载

方法的名字相同,但参数不同(注意仅返回值不同不能算作重载),称为重载。在执行的时候,根据参数的不同来决定执行哪个方法。

  •  覆盖

子类和超类中有同名的方法,且参数也相同,子类中的方法将覆盖超类的方法。

* 前期绑定和后期绑定的概念

对于方法的重载,在程序编译的时候,根据调用语句中给出的参数,就可以决定在程序中执行时调用的版本,这种称为编译时的绑定,也叫做前期绑定;

对于方法的覆盖,要在程序执行时,才能决定调用同名方法的版本,这称为运行时的绑定,也叫做后期绑定。

七、接口

在Java中,由于不支持多重继承,所以引入了接口的概念。一个类可以有一个超类和多个接口。Java中的面向对象编程也被戏称为面向接口编程。足见接口的概念的重要性。

  • 接口的声明

接口是一个特殊的类,他是由静态常量和抽象方法组成的,并且不包含变量和方法的实现

[修饰符] interface 接口名{...}

其中修饰符可以是public或者默认访问控制。

接口中的变量默认是static final ,且必须被赋初值。如果接口是public,那么接口中的成员都隐含是public访问权限。

  • 接口的实现

一个接口可以被一个类或者多个类实现。当一个类实现了一个接口,它必须实现这个接口中的所有方法,这些方法都要被说明成public。使用关键词implements实现接口。

class 类名 implements 接口1,接口2...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值