【HIT软件构造】面向对象的编程(OOP)

目录

1.基本概念

1.1对象

1.2类

2.接口

3.封装与信息隐藏

 4.继承和重写

4.1重写

4.2抽象类

5.多态,子类型,重载

5.1三种多态

5.2特殊多态

5.3参数化多态

5.4子类型多态


1.基本概念

1.1对象

对象是一个状态和行为的集合。

状态是指包含在对象里的数据。在Java中,这些被表示为字段。

而行为是对象所支持的操作。在Java中通过方法来实现。

1.2类

每个对象中都包含类,类定义了接口和实现,是应用程序编程的接口,在其中定义了功能如何具体的实现。

2.接口

什么是接口?在接口中,所有的方法只有定义,但是没有具体的实现。其具体的实现需要通过其他类来实现。一个接口可以有多个实现,这是实现ADT的一种方式。在实现接口的类中,通过关键字implements来注明实现了哪个接口。

需要注意的是,在接口中不包含构造器。因为在接口中不存在具体的实现,需要通过其他的类来实现。而其他的类的名字无法预知,同时接口又支持多实现,所以无法保证所有实现类中都包含同名的构造函数。另外,不能使用构造函数,却可以使用工厂的方法来创建实例。

接口中的方法只有定义无具体实现,但是,我们可以通过default方法来在接口中实现某些功能。这样,我们就可以把某些通用的重复功能统一在接口中实现,可以大大的简化代码。

3.封装与信息隐藏

一个设计良好的模块其内部的具体实现应该是被隐藏的,使用的人只知道具体的操作,但对其内部的代码细节一无所知,这就是封装。

这样有什么好处呢?可以将复杂的系统分解成一个个小的模块,分离地对模块进行开发维护等,可知这样大大加快了操作的效率,并且各模块之间可以并行展开。

通过不同的关键词可以实现对内部成员的可见性的控制。

 4.继承和重写

关于继承,比如接口可以继承接口,类可以继承类等,继承是为了实现代码的重用。

4.1重写

一个允许被重写的方法被称为可重写方法,在Java中,若没有特殊说明,默认为可重写的。

若子类中只允许添加新的方法,但不允许重写类中的方法,则为严格继承。一个被final关键字标注的方法就不可以被重写。

重写的子类与父类有着同样的姓名、参数、返回值类型等,而在使用时具体调用哪个方法在编译阶段是无法判断出来的,需要在运行时根据具体情况来选择。

4.2抽象类

只有定义但没有实现的方法被称作抽象方法,它被用关键字abstract标注出来。而具有抽象方法的类就为抽象类。

抽象类不可以实例化,需要通过子类来具体实现。对于子类中共性的方法可以放在抽象类中来实现。这是抽象类与接口最大的不同之处。、

5.多态,子类型,重载

5.1三种多态

  • 特殊多态 一个方法可以有多个同名的实现
  • 参数化多态 一个类型名字可以代表多个类型
  • 子类型多态 一个变量名字可以代表多个类的实例

5.2特殊多态

如果一个函数适用于很多的类型,并且有可能有多种类型的实现,就会有特殊多态。

public class OverloadExample {
    public static void main(String args[]) {
        System.out.println(add("C","D"));
        System.out.println(add("C","D","E"));
        System.out.println(add(2,3));
    }
    public static String add(String c, String d) {
        return c.concat(d);
    }
    public static String add(String c, String d, String e){
        return c.concat(d).concat(e);
    }
    public static int add(int a, int b) {
        return a+b; 
    } 
}

这里涉及到重载的概念。重载是允许多个方法有同样的名字,但有不同的参数列表和返回值类型。在编译阶段时,就根据各个方法间的不同确定调用的具体是哪个方法。这样编写代码就方便于使用者的使用。对于不同类型的相类似操作,不需要记住额外的方法名来具体区分每种方法,而交给编译器去判断。

对于重载来说,参数列表必须是不相同的,这是判断具体选用哪个方法的依据。

5.3参数化多态

如果一个方法对于多种类型都有同样的行为时,就可以用统一的变量类型来代表多种类型,在运行时根据具体制定的类型来操作。

在Java中使用泛型变量来代表多种类型,有三种形式,即泛型类,泛型接口,泛型方法。

5.4子类型多态

在Java中,一个类只能继承一个父类,但却可以实现多个接口。即单继承,多实现。

 需要注意的是,在Java中声明一个子类型时,要确保子类型的规约至少要与超类型一样强,即子类型的规约不能弱化超类型的规约。

利用子类型多态就可以实现不同类型的对象统一处理,无需在进行区分。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

麻了巴卡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值