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
相关文章
|
20天前
|
算法 Java 程序员
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
50 9
|
20天前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
33 7
|
20天前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
39 5
|
20天前
|
Java 程序员
让我们一起探讨Java多态的奥秘,看看它是如何打破“一刀切”的局限,让我们的代码更加生动多彩
让我们一起探讨Java多态的奥秘,看看它是如何打破“一刀切”的局限,让我们的代码更加生动多彩
33 5
|
21天前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
22天前
|
Java 开发者
【Java基础面试十五】、 说一说你对多态的理解
这篇文章解释了多态性的概念:在Java中,子类对象可以赋给父类引用变量,运行时表现出子类的行为特征,从而允许同一个类型的变量在调用同一方法时展现出不同的行为,增强了程序的可扩展性和代码的简洁性。
【Java基础面试十五】、 说一说你对多态的理解
|
23天前
|
Java 数据处理 开发者
【Java基础面试十二】、说一说你对面向对象的理解
这篇文章阐述了面向对象是一种以类和对象为基础,通过封装、继承和多态等概念来模拟现实世界中的事物及其相互关系的程序设计方法,它强调以事物为中心进行思考和系统构造,与结构化程序设计相比,更符合人类的自然思维方式。
【Java基础面试十二】、说一说你对面向对象的理解
|
22天前
|
Java
【Java基础面试十三】、面向对象的三大特征是什么?
这篇文章介绍了面向对象程序设计的三大基本特征:封装、继承和多态,其中封装隐藏对象实现细节,继承实现软件复用,多态允许子类对象表现出不同的行为特征。
【Java基础面试十三】、面向对象的三大特征是什么?
|
14天前
|
安全 Java 编译器
Java多态
Java多态
11 2
|
19天前
|
Java 开发者 C++