Java 面向对象之多态整理总结

🏠个人主页:黑洞晓威
🧑个人简介:大家好,我是晓威,一个普普通通的大二在校生,希望在CSDN中与大家一起成长。

🎁如果大佬你也在正在学习Java,欢迎来到我的博客查漏补缺,如果有哪里写的不对的地方也欢迎大家指正啊。

多态

多态的概念:
多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。

可以把不同的子类对象都当作父类来看,进而屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,统一调用标准。

  1. 多态是方法的多态

  2. 多态需要继承关系,方法需要重写,父类引用指向子类

    Father f = new Son();

  3. static(属于类,不属于实例)

    final(常量无法改变,子类无法继承父类),

    private(私有的不能重写)

    这三个修饰词修饰的方法没有多态

  • 父类
 public void run(){
     System.out.println("run");
 }

 public  void test(){
    System.out.println("Person");
}
  • 子类
public  void say(){
    System.out.println("say");
}
public  void test(){
    System.out.println("Student");
}
  • 运行
public static void main(String[] args) {
    //父类的引用指向子类,但不能直接调用子类的方法
    Person person=new Student();
    //执行父类的run()方法
    person.run();
    //子类重写了父类的方法,则执行子类的方法
    person.test();
    //报错:能执行那些方法看左边的类型,父类不能直接调用子类的方法
    person.say();
    //类型转换后可以调用子类的方法
    ((Student) person).say();
	
    //子类对象可以调用自己的与父类的方法
    Student student = new Student();
    student.say();

}
instanceof和类型转换

instanceof关键字:(x instanof y)判断x与y是否有父子关系

public static void main(String[] args) {
    //Object>Person>Student
    //Object>Person>Teacher
    //Object>String    
    Object object = new Student();
    System.out.println(object instanceof Student);//T
    System.out.println(object instanceof Person);//T
    System.out.println(object instanceof Object);//T
    System.out.println(object instanceof Teacher);//F
	System.out.println(object instanceof String);//F
    System.out.println("=================");
    
    Person person = new Student();
    System.out.println(person instanceof Student);//T
    System.out.println(person instanceof Person)//T       System.out.println(person instanceof Object);//T
    System.out.println(person instanceof Teacher);//F
    //报错,String与Persong同处于Object子类,两者没有关系
    //System.out.println(person instanceof String);
    
    System.out.println("=============");
    Student student = new Student();                     System.out.println(student instanceof Student);
    System.out.println(student instanceof Person);
    System.out.println(student instanceof Object);
    //报错,teacher与student无关
    //System.out.println(personstudent instanceof Teacher);
    //String与student无关
    //System.out.println(person instanceof String);

}

类型转换

public static void main(String[] args) {
    //高<-----低,低转高可以直接转换
   Person A = new Student();
   A.father();//father();父类的方法,son();子类的方法
	//A.son();报错
    //需要将A转化为Student类型,高转低需要强制转换
    //方法1
   Student student = (Student)A;
   student.son();
	//方法2
    ((Student) A).son();
    
    =================================
    Student student1 = new Student();
    //低转高可以直接转化,可能丢失自己本来的方法
    Person person=student1;
    //person.son();报错

}

多态的主要作用:方便方法的调用,减少重复的代码,简洁。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黑洞晓威

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

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

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

打赏作者

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

抵扣说明:

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

余额充值