面向对象学习(五)

本文探讨了多态性在Java中的具体体现,通过Person与Man类的继承与重写,展示了如何通过父类引用调用子类方法。讲解了instanceof用于向下转型的安全检查,以及Object的equals方法和包装类的使用。涉及了自动装箱与拆箱的概念,以及基础编程概念的实战示例。
摘要由CSDN通过智能技术生成

多态性(父类引用指向子类对象)

  • 调用同名同参数方法,执行子类重写的

  • 编译看左边,运行看右边

  • 前提:有继承,有重写

  • 多态性不适用属性,属性编译运行都看左边

  • 如果不是晚绑定就不是多态

public class Person {
    String name;
    int age;
    public void eat(){
        System.out.println("吃饭");
    }
    public void walk(){
        System.out.println("走路");
    }
}
public class Man extends Person {
    public void special(){
​
    }
    public void eat(){
        System.out.println("吃强身健体的");
    }
}
​
​
public class PersonTest {
    public static void main(String[] args) {
        Person p=new Man();
        p.eat();//执行子类的
        //不能调子类特有的p.special;
    }
}

instance of(向下转型)

  • a instance of A判断a是否是类A的实例、

  • 为了避免在向下转型前出现异常,使用该关键字判断

  • A是子类,B是父类,A正确,B一定正确

    Person p=new Man();
    //Woman w=(Woman)p;//运行时出错ClassCastException
    if (p instanceof Woman){
        Woman w=(Woman)p;
    }

Object的使用

  • equals方法:比较对象是否相等

    • ==使用在基本数据类型比较变量保存数据是否相等,不一定类型相同

    • ==使用在引用数据类型比较的是地址值,只要new就有一个地址

    • equals是一个方法,只适用引用数据类型,不重写的话和==一样,重写后可以比较引用类型的属性判断

    • 可以用编译器自动重写!

包装类

  • 基本数据类型对应的包装类int---Integer/char----Character,其他都是大写即可

  • 理解:让基本数据类型也具有类的特征

  • 转换

public static void main(String[] args) {
    //基本数据类型变包装类
    int num1=10;
    Integer innum1=new Integer(num1);
    System.out.println(innum1.toString());//转换为类,可以调用方法
    //包装类变基本数据类型:调用xxxValue()
    int i1=innum1.intValue();
    System.out.println(i1+1);
     //转为String类型:调用Sting的valueof(Xxx xxx)
        String str1=String.valueOf(i1);
        //String类型转换为二者,调用包装类的parseXxx(String s)
        String str2="123";
        int num2=Integer.parseInt(str2);
}
  • 自动装箱与拆箱

int num1=10;
Integer in1=num1;
int num2=in1;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冉卿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值