面向对象技术

封装:
  1. 将对象分为三种属性:私有,公有与保护(同一个包内无用),检查使用的对象在生命周期的生存状态,对象在相应的状态上才会产生相应的行为;
  2. 继承和多态一定不会打破封装;
  3. 对象间关系:关联、继承、组合、聚合、依赖;
继承:
  1. 子对象实例化过程中先实例化父对象;
  2. 子对象与父对象方法重名,先调用子对象;
  3. 子对象实例化相当于在子对象中加入一个父对象;
  4. 父对象无用的东西也继承了,造成系统越来越大,有节制的继承;
  5. 子类拥有父类的部分属性和行为;
  6. 子类继承父类,父类中的可见性会发生改变;
  7. 公有继承:原属性访问形式不变、私有继承:所有属性访问形式变成私有、保护继承:公有和保护属性为保护属性,私有还是私有;
  8. 对象中如果有常量属性,则不能有缺省的构造函数,必须在对象实例化时赋予初值;
  9. 类中如果定义了构造函数,那么缺省的构造函数会被覆盖;
多态:
  1. 通过调用父对象的方式来实际调用子对象,各个子对象有自己不同的行为;
  2. 三个必要条件:继承、重写和向上转型(父类引用指向子类对象);
  3. 对外只显示父类的方法,子类是不可见的;
  4. 父对象可以根据当前赋值给他的子对象的特性以不同的方式运行,但是子对象私有的部分是不能访问的;
  5. 父类引用指向子对象的指针,调用子类方法的前提是子类重写了父类的方法;当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。 (但是如果强制把超类转换成子类的话,就可以调用子类中新添加而超类没有的方法了);
  6. 方法调用的优先问题,优先级由高到低依次为:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。比如,a2.show(b),a2是一个引用变量,类型为A,则this为a2,b是B的一个实例,于是它到类A里面找show(B obj)方法,没有找到,于是到A的super(超类)找,而A没有超类,因此转到第三优先级this.show((super)O),this仍然是a2,这里O为B,(super)O即(super)B即A,因此它到类A里面找show(A obj)的方法,类A有这个方法,但是由于a2引用的是类B的一个对象,B覆盖了A的show(A obj)方法,因此最终锁定到类B的show(A obj),输出为"B and A”。
接口与抽象类:
  1. 抽象类可以有属性和缺省的方法;
  2. 接口中一般不添加成员属性,如果需要可以添加一个get方法;
  3. java8后接口中可以添加静态方法与实现,直接通过接口名调用;
生命周期:
  1. 静态对象/变量的生命周期从定义开始,从应用结束的时候生命结束,static延长了生命周期;
  2. 作用域:静态对象/变量有限制的被使用,不是所有情况下都可用,考虑封装;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值