面向对象思想(二)

一.封装

回顾:

通过实例对象可以任意访问成员变量,这就造成了极大的安全隐患因此采用封装的手段
vate,default,protected,public;
private只能允许本类访问;
default允许允许同一包下访问;
protected允许继承本类的子类访问;
public允许外部类访问;
通常情况下,为了保证程序的高内聚低耦合所以,只暴露少量外部方法,将成员变量做private封装只提供get,set方法。例如:工具类Bean类。这样减少外部对类和方法内部的参与。
假如要写一个父类类,有很多方法需要子类继承并实现的,这样的通常使用protect修饰。
像public这样一般修饰提供给外部类使用的方法或成员,例如:utils工具类和构造方法

特别注意:

外部类修饰词只有两种默认即public和默认,因为其他修饰符对外部类无实际意义。

二.深入理解构造器

回顾:

用处:创建对象时初始化。
调用构造方法创建实例时,系统已经在堆内存分配内存空间,并初始化。
当构造方法结束时,将实例对象返回。
初始化规则:基本数据类型0,或者false,引用型数据类型都是null。

特别注意:

使用工厂模式,反射等方式,依然是依赖构造器实现的。

子类继承父类时,执行构造方法,都会先调用一次父类的构造方法。(按层次依次调用)

三.继承

回顾:

继承为单继承。
重写规则:“两同”(方法名相同,参数列表不同)“两小”(异常和返回值类型要小于父类)“一大”(访问权限要大于等于父类)

特别注意:

如果子类和父类有同名Field,则系统会分配两块内存空间(堆内存)分别存储两个Field,并在子类中把父类的Field隐藏起来。并不是完全覆盖了。可以通过super调用父类隐藏的Field或者是父类原有方法(重写之前的同名方法)。

四.多态

回顾:

什么是多态性:
在同一类中方法的重载,体现了方法的多态性。
同名方法在子类和父类之间产生多态,体现了类的多态性
接口和抽象类也体现了接口的多态性。

特别注意:

多态存在的必要条件:

1必须要有继承

2必须要复写

3父类引用指向子类对象

class Father{
 public int a=6;
 public void test(){
   syso.printf("父类方法");
   }
   punlic void fatherMotherd(){
   syso.printf("父类方法");
   }
}
class Son extends Father{
  public float a=3.0;
  public void test(){
  syso.printf("子类方法");
  }
  public void sonMethord(){
  syso.printf("子类特有方法");
 }
}

class test{
  public void main(String[] args){
  //父类引用指向子类对象,这也是一种向上转型,是系统自动完成的。
  //fason 的编译时类型是Father,而运行时类型是Son  
  Father fason=new Son();

  //对象Field是不具备多态性的,系统总是访问编译时的Field,而不是运行时的Field,因此下面代码输出的a是6!
  syso.printf("输出a="+fason.a);

  //执行方法时分为以下几种情况:

  //1.执行父类方法,这时没有体现出多态。
  fason.fatherMethord();

  //2.执行父类没有的方法,即子类的方法,这时会出现编译失败。因为在编译期,该引用的类型并没有该方法,因此此时需要向下转型!// (Son)fason;将其进行向下转型
  //fason.sonMethord();//由于不能执行所以注释掉了!

  //3.执行同名方法,这是就出现了多态,此时会根据执行时类型执行对应的方法。
   fason.test();
  //此刻输出的就是子类的方法,如果想要执行父类方法则需要super.test(); 
 }
}

五.向下转型Intanceof的用法

用于判断前面的数是否是后面数的子类,实现类,或者对象。可作为是否向下转型的依据。也可以用来判断某个view是否是某个特定的布局。
前一个操作数通常是引用型变量,
后一个操作数通常是一个类接口,或者是一个实例。
前后两个操作数之间要有继承关系。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值