面向对象

我们用一个类的变量记住它的子类的子类的实例,此时如果是调用子类中的方法,只需要强转为子类

就可以了,没必要非要强转成子类的子类
i nstanceof关键字判断类型时会认为子类实例也属于父类类型

继承细节
子类不会继承父类私有的成员
构造函数不会被继承
只支持单继承,可以重多继承

子类实例化过程
子类在创建对象时做了什么事情
在创建子类对象时,会调用子类的构造函数,在子类构造函数的第一行一定会调用父类的构造函数在

子类构造函数中如果没有显式地声明调用父类哪个构造函数,虚拟机会自动调用父类无参的构造方法
我们可以在构造函数中使用this(实参)声明调用自己其他的构造函数,还可以使用super(实参)声

明调用父类的构造函数,this和super调用只能出现一次,并且必须在第一行。

覆盖父类的方法
子类当中覆盖父类的方法必须要和父类具有相同的方法名、参数列表,返回值类型必须和父类方法返

回值类型一致后者子类类型
子类的方法不能比父类有更加严格的访问权限,因为我们经常会将子类当做父类来用,在针对父类写

功能调用时,会去看父类方法的访问权限,如果没问题就调以把,此时子类实例传递进来同样会被调以把,如果

权限严格,可能会出问题。

面向对象的多态性
把子类当父类来用,针对父类进行方法调用,传入不同的子类,执行的结果完全不一样

final关键字
最终的、终态的
final修饰的类不能被继承
final修饰的方法 不能被子类覆盖
final修饰的变量为常量,一旦定义,值不改变
public static final共同修饰的变量为全局常量,需要定义时赋值,而且所有字符大写

设计模式 组合
当一个对象在运作过程中必须要用到另外一个对象的方法,然而他们又构不成继承关系
有的时候用组合不是因为自己需要对象,而是父类需要

抽象类
没有方法体的方法必须要声明为abstract抽象方法
含有抽象方法的类一定是抽象类,必须要声明为abstract
抽象类不一定含有抽象方法
抽象类的定义:用abstract修饰的类就是抽象类
抽象类不能被实例化
可以用一个抽象类来继承一个抽象类,会继承所有的方法
可以用一个类来继承抽象类,此时,实现抽象类中所有的抽象方法
抽象类的访问权限没有特殊之处,看修饰符
如果有多个类具有相同的方法声明,但是方法实现不一样,此时也应该定义抽象的父类
,将方法在父类中定义,这样别人在学习我们的软件时,只需要学习父类就可以了
一般来讲,继承关系3~4层为宜。

类在什么情况下没有抽象方法仍需声明为抽象类

模板方法设计模式
1 定义一个抽象类作为模板,将具体做事情方法定义出来,但是不实现
2 对外提供一个共有的方法作为接口,规定做事情的顺序,此方法为模板方法,应声明final,禁止子

类重写
3 子类继承模板,实现所有的抽象方法(需要具体做的事情)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值