面向对象设计 接口 抽象类

        接口和抽象类是Java面向对象设计的两个基础机制。

        接口:接口是对行为的抽象,它是抽象方法的集合,利用接口可以达到API定义和实现分离的目的。接口不能实例化,不能包含任何非常量成员,任何field(字段/成员变量)都是隐含着public static final的意义;同时没有非静态方法实现,要么是抽象方法,要么是静态方法【均无实际代码块{..}】。Java类使用implements来实现接口。  ——  在java8以后,接口中可以添加使用default 修饰的方法(可以有代码块)或者static修饰的方法(可以有具体代码块)。

       【 接口也存在没有任何方法的接口,通常叫作Marker  Interface,目的是为了声明某些东西,比如:Cloneable、Serializable等。Java 8 增加了函数式编程的支持,所以增加了一类定义,即functional interface,就是只有一个抽象方法的接口,可以直接用Lambda表达式进行实现,简化了代码】 

        抽象类:抽象类是不能实例化的类,用abstract关键字修饰class,其目的主要是代码重用。除了不能实例化,形式上和一般的Java类并没有太大区别,可以有一个或者多个抽象方法,也可以没有抽象方法。抽象类大多用于抽取相关Java类的公用方法实现或者是共同成员变量,然后通过继承(extends)的方式达到代码复用的目的。

​​​​​​​      接口是至上而下的,抽象类是至下而上的!


面向对象:

        特征:封装、继承、多态

        封装:封装的母的是隐藏事务内部的实现细节,以便提高安全性和简化编程。封装提供了合理边界,避免外部调用者接触到内部的细节。特别是在多线程环境中暴露内部状态,就会导致并发修改问题。同时,封装这种隐藏方式,也提供了简化的界面,避免了太多无意义的细节浪费调用者的精力。

        继承:是代码复用的基础机制,继承是非常耦合的一种关系,父类代码修改,子类行为也会变动!

        多态:父类引用变量可以指向子类对象,父类类型 变量名 = new 子类类型()——也叫向上转型,有向上也就有向下转型;多态是同一个行为具有多个不同表现形式或形态的能力,多态就是同一个接口,使用不同的实例来执行不同的操作。【编译看左边,运行看右边,编译的时候主要看父类所拥有的字段和方法,具体运行的时候看子类是否有重写如果有重写存在,执行子类的方法。子类继承所有父类非private修饰的资源,无法重写final修饰的资源(仅使用)】

        重写(override):是发生在父子类中相同名字和参数列表的方法,不同的实现;方法名一致,参数列表不一致,重写的时候如果有返回值,基本数据类型和包装类型的返回值必须等于被重写的方法的返回类型,其他类型的返回值类型,重写的方法必须类型小于被重写的方法。因为里氏代换原则(在一个软件系统中,子类应该可以替换任何基类能够出现的地方,并且经过替换以后,代码还能正常工作,进行继承关系抽象时,凡是可以用父类或者基类的地方,都可以用子类替换),所以,子类重写父类方法的时候,方法的访问控制符的权限必须大于等于父类的被重写方法。

        重载(overload):相同名字的方法,但是参数列表不同,本质上这些方法签名是不一样的。方法名和参数一致,但是仅仅返回值不同,不算重载,编译出错


【开闭原则(Open-Close, Open for extension, close for modification)设计要对扩展开放,对修改关闭,程序设计应该保持平滑的扩展性,尽量避免因为新增同类功能而修改已实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Laughing_Xie

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

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

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

打赏作者

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

抵扣说明:

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

余额充值