java面对对象三大特征之继承多态(代码片段)

铅华殿 铅华殿     2022-12-19     554

关键词:


  关于JAVA面对对象的三大特征,在之前的博客, 我们已经介绍了封装, 在这里我们将接下来介绍继承和多态,欢迎大家一起探讨、学习。

继承

在之前我们也介绍了它的概念, 接下来我们复习一下。

1.继承的概念:

  继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。简单而言,共性放到父类,特性放到子类;父类 --> 子类 --> 一般

  1. 继承得到的新类称为“子类”或“派生类”。被继承的父类称为“基类”、“父类”或“超类”。
  2. 继承的过程是一个从一般到特殊的的过程。
  3. 继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力。

2.继承的实现:

使用关键字 : extends 实现继承
格式 class 子类 extends 父类

class Zi extends FU
........

  继承带来的好处 : 继承可以让类与类之间产生关系,子父类关系,产生子父类后,子类则可以使用父类中非私有的成员。

3.继承的好处与弊端:

继承好处 :
  a .提高了代码的复用性(多个类相同的成员可以放到同一个类中)
  b .提高了代码的维护性(如果方法的代码需要修改,修改一处即可)
继承弊端 :
  继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子
  实现也不得不跟着变化,削弱了子类的独立性
继承的应用场景:
  使用继承,需要考虑类与类之间是否存在is…a的关系,不能盲目使用继承
  is…a的关系:谁是谁的一种,例如:老师和学生是人的一种,那人就是父类,学生和老师就是子类

4.super

  • this&super关键字:
    • this:代表本类对象的引用
    • super:代表父类存储空间的标识(可以理解为父类对象引用)
  • this和super的使用分别 :
    • 成员变量:
      • this.成员变量 - 访问本类成员变量
      • super.成员变量 - 访问父类成员变量
    • 成员方法:
      • this.成员方法 - 访问本类成员方法
      • super.成员方法 - 访问父类成员方法
  • 构造方法:
    • this(…) - 访问本类构造方法
    • super(…) - 访问父类构造方法

5.继承中的成员访问特点以及访问修饰符:

构造方法的访问特点:
  子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化,原因在于,每一个子类构造方法的第一条语句默认都是:super()
注意:
  在写类的时候,一定要写默认无参的构造方法,如果一个构造方法的第一句既不是this(),也不是super()时,那么就会在这里隐含的调用他的父类的无参的构造方法,即隐含的有super()。

JAVA中的访问修饰符

访问修饰符访问权限继承
priavte本类不能继承
default本类+同包同包子类可以继承
protected本类+同包+不同子包可以继承
public公开可以继承

成员方法的访问特点:

通过子类对象访问一个方法

  1. 子类成员范围找
  2. 父类成员范围找
  3. 如果都没有就报错(不考虑父亲的父亲…)

6.方法重写以及继承的注意事项:

方法重写:

1、方法重写概念

  • 子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样)

2、方法重写的应用场景

  • 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容

3、Override注解

  • 用来检测当前的方法,是否是重写的方法,起到【校验】的作用

方法重写的注意事项

  1. 私有方法不能被重写(父类私有成员子类是不能继承的)
  2. 子类方法访问权限不能更低(public>私有>默认)

例如代码:

public class Fu 
    private void show() 
        System.out.println("Fu中show()方法被调用");
    

    void method() 
        System.out.println("Fu中method()方法被调用");
    


public class Zi extends Fu 

    /* 编译【出错】,子类不能重写父类私有的方法*/
    @Override
    private void show() 
        System.out.println("Zi中show()方法被调用");
    
   
    /* 编译【出错】,子类重写父类方法的时候,访问权限需要大于等于父类 */
    @Override
    private void method() 
        System.out.println("Zi中method()方法被调用");
    

    /* 编译【通过】,子类重写父类方法的时候,访问权限需要大于等于父类 */
    @Override
    public void method() 
        System.out.println("Zi中method()方法被调用");
    

继承中的注意事项:

  1. Java中类只支持单继承,不支持多继承
    错误范例:class A extends B, C
  2. Java中类支持多层继承

多层继承代码:

public class Granddad 

    public void drink() 
        System.out.println("爷爷爱喝酒");
    



public class Father extends Granddad 

    public void smoke() 
        System.out.println("爸爸爱抽烟");
    



public class Mother 

    public void dance() 
        System.out.println("妈妈爱跳舞");
    


public class Son extends Father 
	// 此时,Son类中就同时拥有drink方法以及smoke方法

多态

1.多态的概念

  • 什么是多态

    ​ 同一个对象,在不同时刻表现出来的不同形态

  • 多态的前提

    • 要有继承或实现关系
    • 要有方法的重写
    • 要有父类引用指向子类对象

2.多态中成员访问特点

成员访问特点

  • 成员变量 :
    ​ 编译看父类,运行看父类
  • 成员方法 :
    ​ 编译看父类,运行看子类

代码演示:
  动物类

xpublic class Animal 
    public int age = 40;public void eat() 
    System.out.println("动物吃东西");    
    

  猫类

public class Cat extends Animal 
    public int age = 20;
    public int weight = 10;

    @Override
    public void eat() 
        System.out.println("猫吃鱼");
    

    public void playGame() 
        System.out.println("猫捉迷藏");
    

  测试类

public class AnimalDemo 
    public static void main(String[] args) 
        //有父类引用指向子类对象
        Animal a = new Cat();

        System.out.println(a.age);
//        System.out.println(a.weight);

        a.eat();
//        a.playGame();
    

3.多态的好处和弊端

  • 好处
    ​ 提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作

  • 弊端
    ​ 不能使用子类的特有成员

4.多态中的转型

  • 向上转型
    ​ 父类引用指向子类对象就是向上转型

  • 向下转型
    ​ 格式:子类型 对象名 = (子类型)父类引用;

代码演示:
  动物类

public class Animal 
    public void eat() 
        System.out.println("动物吃东西");
    

  猫类

public class Cat extends Animal 
    @Override
    public void eat() 
        System.out.println("猫吃鱼");
    

    public void playGame() 
        System.out.println("猫捉迷藏");
    

  测试类

public class AnimalDemo 
    public static void main(String[] args) 
        //多态
        //向上转型
        Animal a = new Cat();
        a.eat();
//      a.playGame();


        //向下转型
        Cat c = (Cat)a;
        c.eat();
        c.playGame();
    

面向对象三大特征之多态(代码片段)

面向对象的三大特征:封装、继承、多态。今天重点来看一下“多态”。封装  指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。将属性或方法进行封装,防止外部程序随机访问,加强代码的安全性。继承&n... 查看详情

面向对象三大特征之继承,多态

//面向对象三大特性//继承//概念:子类可以继承父类的一切//方法重写:在子类里面对父类的方法进行重写//特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类//override:重写//overload:重载,编程多态//parent::值... 查看详情

面向对象三大特征(代码片段)

面向对象三大特征:封装、继承、多态继承是多态的前提,如果没有继承,就没有多态。封装性在Java当中的体现:方法就是一种封装关键字private也是一种封装(一旦使用了private进行修饰,那么本类当中仍然可以随意访问。但是... 查看详情

面向对象的三大特征之三——多态

...内容有过详细的记录,即重复调用的代码块—方法和面向对象的特性之二—继承。二、对象的多态性——引用类型转换。1.向上转型(自动转型)——子类对象自动转换为父类对象。1classFather2{3publicvoidspeak()4{5System.out.println( 查看详情

测开之面向对象进阶篇・《多态》(代码片段)

面向对象三大特征面向对象编辑的三大特征:封装、继承、多态。封装:客观的失误封装成类(将数据和方法放在一个类中构成了封装)。继承:python中一个类可以继承于一个类,也可以继承多个类,... 查看详情

python入门-6面向对象编程:07面向对象三大特征(封装继承多态)-继承(代码片段)

一:面向对象三大特征介绍  Python是面向对象的语言,也支持面向对象编程的三大特性:继承、封装(隐藏)、多态。  封装(隐藏)    隐藏对象的属性和实现细节,只对外提供必要的方法。相当于将“细节封装... 查看详情

java中面向对象三大特性之——多态(代码片段)

多态的概述: 多态是继封装、继承之后,面向对象的第三大特性。生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也是不一样的。可见,同一行为,通过不同的... 查看详情

java面向对象三大基本特征(代码片段)

目录1.类和对象1.1概念1.2类的定义1.3对象的使用2.封装2.1封装思想2.2private和this3.继承3.1继承思想3.2方法重写3.3Java继承的注意事项:4.多态4.1多态思想4.2 多态中的转型如何理解面向对象?简单的说就是把事物和操作事物的... 查看详情

java入门二十二面向对象三大特征之多态

面向对象的三大特征:继承、封装、多态,今天学的是多态,看完后有什么不懂的地方可以问小编,也可以评论里问,我们一起解决。多态(polymorphism)在编程语言和类型论中,多态指为不同数据类型的实体提供统一的接口。多... 查看详情

面向对象的三大特征:继承封装多态(代码片段)

面向对象:面向对象专注于由谁来解决这个过程,而调用者无需关注对象实现的细节编程特点:出现了一个个的类,从类中拿到对象,通过对象直接解决问题类:具有一系列相同属性(特征)和方法(行为)的个体的集合称为类   ... 查看详情

java面向对象编程三大特征-多态

Java面向对象编程三大特征-多态本文关键字:Java、面向对象、三大特征、多态多态是面向对象编程的三大特征之一,是面向对象思想的终极体现之一。在理解多态之前需要先掌握继承、重写、父类引用指向子类对象的相关概念,... 查看详情

java基础——面向对象三大特征(继承封装多态)(代码片段)

面向对象三大特征(继承、封装、多态)1继承2封装3多态4方法重载1继承classParent 属性; 构造方法; 其它方法;classChildextendsParent 全部继承过来; 可以重写父类的属性与方法; 可以拥有自己独特的属性和方法;继承语法——exten... 查看详情

oop三大特征之多态(polymorphism)(代码片段)

...用过多态。只使用封装、继承的编程方式,称为基于对象(ObjectBased)编程只有加入多态,才能称为OOP没写过多态,就是没写过OO代码。正是有了多态,软件设计才有更大弹性,更好拥抱变化。如何理解... 查看详情

golang如何体现面向对象三大特征之多态?(代码片段)

...数组基本介绍变量(实例)具有多种形态。面向对象的三大特征,在Go语言,多态特征是通过接口实现的。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。快速入门在前面的Usb接口案例&#... 查看详情

java面向对象的三大特征?

面向对象三大特性继承:一般类只能单继承,内部类实现多继承,接口可以多继承封装:访问权限控制public>protected>包>private内部类也是一种封装多态:编译时多态,体现在向上转型和向下转型,通过引用类型判断调用哪... 查看详情

面向对象的三大特征,封装继承多态的个人理解以及代码分析(代码片段)

...解每个每个房屋的出租信息,不然是找不到房子的。面向对象:对象帮我们做事情,找到对应的对象我们就可以得到想要的结果。      例如:我们找房子不在如此的繁琐,只要找到中 查看详情

c++面向对象三大特征封装继承和多态知识总结(代码片段)

面向对象三大特征:封装,继承,多态;一、封装:该公开的就公开话,该私有的就隐藏掉,主要是由public,private实现;作用是便于分工和分模块,防止不必要的扩展;二、继承:... 查看详情

java面向对象之继承(代码片段)

继承(Java面向对象三大特征之一)目录继承(Java面向对象三大特征之一)1.1、使用继承1.1.1编写父类A1.1.2编写子类B,继承父类A注意1.2继承的特性1.3子类继承父类的什么?不能被继承的父类成员:1.4super和this关键字1.5继承条件下... 查看详情