(递归)封装,继承,多态,抽象(接口)

递归

方法本身调用自己,直到某个条件结束就叫递归。在递归中,简单的递归和循环相似,难点递归需要数学运算。如果递归没有给出结束条件,则容易出现java.lang.StackOverflowError内存溢出(栈溢出,堆溢出)

封装

将相应的属性、行为装到一个类中,然后将所有属性私有化,就叫封装。java类的封装中,会提供get和set操作


继承

类的扩展,扩展得到的称为子类(派生类),扩展的原型称为父类(基类,超类)
父类中应该具有所有子类都共有的属性和行为。java中常用is a来评判是否属于继承,如果一个子类继承了另一个父类,则会具有其所拥有的属性和行为。而java继承中只能单继承(只有一个父类)。在内存中,先是根据父类的内容进行加载,然后加载子类附加项

在子类中写extends关键字来继承。例如:public class 子类 extends 父类{}。父类也可以有父类。如果想修改父类的行为,则需要重写,在子类中,如果有和父类同名的属性和行为,我们可以使用super来调用父类的属性和行为,使用this来调用本类的属性和行为,super()指代父类的构造器,在子类构造器中,第一行会默认调用父类的无参构造器super()。

如果父类中书写了带参构造器,子类在书写时,会默认生成一个无参构造器,但由于子类的无参会默认调用父类的无参,故报错



多态

相同行为,不同实现。分为静态多态和动态多态

静态多态是重载,在运行前就知道结果。动态多态在运行前不知道结果

动态多态有三种体现:1.向上转型 2.instanceof 3.动态绑定机制


抽象

对高父级的类模板就是一个模糊的概念,需要对有各种属性的子类创建对象才能具体描述

抽象的结构:在类的定义时的class前面加abstract 关键字    格式为: public abstract class Role{}

抽象类不创建对象,或者说抽象类不能使用new等措施创建对象,抽象的事物没有描述清楚,所以不能有具体的实例抽象的可以是类,也可以是方法,如:public abstract int zMoney();

抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类!


接口

是一种数据类型,是比抽象类更抽象的表现形式,不是类!接口创建时,只需将class改成interface(习惯性的在类名后面加一个Inter)

接口中的方法都是抽象的
接口中的方法可以不用abstract关键字修饰,但默认为让他修饰(写不写都是抽象方法)

抽象类可以让别的类继承,在类名后加implements   例:Learn2 implements Learn2Inter{}

实现一个接口,有两种选择:1.不去实现方法,将类变成抽象类2.重写所有方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值