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

简介: 多态的概念:多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。
🏠个人主页: 黑洞晓威
🧑个人简介:大家好,我是晓威,一个普普通通的大二在校生,希望在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();报错

}
多态的主要作用:方便方法的调用,减少重复的代码,简洁。
image.png
相关文章
|
1月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
30 1
|
2月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
29 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
2月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
50 2
|
3月前
|
存储 Java 测试技术
Java零基础-多态详解
【10月更文挑战第10天】Java零基础教学篇,手把手实践教学!
49 4
|
3月前
|
Java 编译器 程序员
Java多态背后的秘密:动态绑定如何工作?
本文介绍了Java中多态的实现原理,通过动态绑定和虚拟方法表,使得父类引用可以调用子类的方法,增强了代码的灵活性和可维护性。文中通过具体示例详细解析了多态的工作机制。
88 4
|
4月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
3月前
|
Java
java继承和多态详解
java继承和多态详解
59 5
|
4月前
|
Java 编译器
Java——类与对象(继承和多态)
本文介绍了面向对象编程中的继承概念,包括如何避免重复代码、构造方法的调用规则、成员变量的访问以及权限修饰符的使用。文中详细解释了继承与组合的区别,并探讨了多态的概念,包括向上转型、向下转型和方法的重写。此外,还讨论了静态绑定和动态绑定的区别,以及多态带来的优势和弊端。
98 8
Java——类与对象(继承和多态)
|
3月前
|
存储 Java 测试技术
Java零基础-多态详解
【10月更文挑战第1天】Java零基础教学篇,手把手实践教学!
32 1
|
3月前
|
安全 Java 编译器
【一步一步了解Java系列】:重磅多态
【一步一步了解Java系列】:重磅多态
33 3