面向对象特征三:多态性;Object类;包装类

面向对象特征三:多态性

1.多态性的表现:①方法的重载与重写   ②子类对象的多态性
2.使用的前提:①要有继承关系 ②要有方法的重写
3.格式:Person p = new Man();//向上转型
            // 虚拟方法调用:通过父类的引用指向子类的对象实体,当调用方法时,实际执行的是子类重写父类的方法
        p1.eat();
        p1.walk();
       // p1.entertainment();
    
4.>编译时,认为p是Person类型的,故只能执行Person里才有的结构,即Man里特有的结构不能够调用
  >子类对象的多态性,并不使用于属性。

5.关于向下转型:
  ①向下转型,使用强转符:()
   ②为了保证不报ClassCastException,最好在向下转型前,进行判断: instanceof
    // 若a是A类的实例,那么a也一定是A类的父类的实例。
        if (p1 instanceof Woman) {
            System.out.println("hello!");
            Woman w1 = (Woman) p1;
            w1.shopping();
        }

        if (p1 instanceof Man) {
            Man m1 = (Man) p1;
            m1.entertainment();
        }

Object类

1.java.lang.Object 类,是所有类的根父类!

2.Object类仅有一个空参的构造器  public Object(){  }

3.关于方法:
  ① equals(Object obj)

  public boolean equals(Object obj) {
        return (this == obj);
   }

// ==
// 1.基本数据类型:根据基本数据类型的值判断是否相等。相等返回true,反之返回false
// 注:两端数据类型可以不同,在不同的情况下,也可以返回true。
// 2.引用数据类型:比较引用类型变量的地址值是否相等。

//equals():
>①只能处理引用类型变量②在Object类,发现equals()仍然比较的两个引用变量的地址值是否相等
>像String 包装类 File类 Date类这些重写Object类的equals()方法,比较是两个对象的
//"实体内容"是否完全相同。
>若我们自定义一个类,希望比较两个对象的属性值都相同的情况下返回true的话,就需要重写Object类的
 equals(Object obj)方法

② toString()方法
当我们输出一个对象的引用时,会调用toString()方法。
1.public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
当我们没有重写Object类的toString()方法时,打印的就是对象所在的类,以及对象实体在堆空间的位置
2.一般我们需要重写Object类的toString()方法,将此对象的各个属性值返回。
3.像String类、Date、File类、包装类都重写了toString()方法。

包装类

基本数据类型由于不是类,不能够使用java类库里提供的大量的方法。所有在设计上,
我们让每一个基本数据类型都对应一个类,同时数据存储的范围还不变。此时相当于
基本数据类型就具有了类的特点。这些类即为包装类(wrapper 或封装类)


我们需要掌握的:
基本数据类型、包装类、String类之间的转换!


简易版:
1.基本数据类型与对应的包装类有自动装箱、自动拆箱
如:int i = 10;
      Integer i1 = i;//自动装箱
      int j = i1;//自动拆箱
2.基本数据类型、包装类---->String类:调用String类的重载的valueOf(Xxx xx);
  String类---->基本数据类型、包装类:调用相应的包装的parseXxx(String str);
  注意:String str = "123";
            int i = (int)str;是错误的转法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值