java学习笔记(4)多态

时间:2022-03-01 11:04:06

一、多态

---------------------------------------------

  1.定义:某一类事物的多种存在形态

    例如:动物中猫,狗。

    猫这个对象对应的类型是猫类型

      猫 x  = new 猫();

    同时猫也是动物的一种,也可以把猫称之为动物。

    动物  y = new 猫();  //这里注意:动物是猫和狗在具体事物中抽取出来的父类型,这个地方是父类型的引用指向子类对象

  2.在程序中的体现:

    父类或者接口的引用指向或者接受自己的子类对象。

  3.好处和作用:多态的存在提高了程序的扩展性和后期的可维护性

  4.前提:需要存在继承或者实现关系;需要覆盖操作。  5.构造函数为什么没有返回值类型声明?  -----------------------------------------

    构造函数也是函数,其实也是有返回值的,返回的就是对象的类型,而构造函数和类名相同,返回的类对象的实例。
  2.阐述对象创建的过程。
  ------------------------------------------
    创建对象主要是指对象的构造过程,与静态代码块无关,静态代码块是在类加载的时候执行的,而且静态代码块只加载一次
  3.构造代码快可以访问之后定义的成员变量吗?
  ------------------------------------------------
    构造代码块访问成员变量与定义在前后的顺序是没有关系的,构造函数是一个方法,这个过程需要在栈中进行相关的执行
  4.静态成员和非静态的区别?
  ---------------------------------------
    静态变量使用static修饰符来进行相关的声明,在类被实例化的时候进行相关的创建,通过类进行访问不带有static修饰符声明的变量称为非静态成员变量,
    在对象被实例化的时候进行相关的创建,通过对象进行访问一个类的所有实例的同一静态变量都是统一个值
    静态成员跟类有关,跟对象无关,访问静态成员,直接使用类名.方法进行相关的访问
    非静态就是通过对象的方式来访问,
  5.怎么理解this,什么时候用this?
  ----------------------------------
    在类的内部,使用this来访问当前对象,来指向当前的一个引用,是一个指向自身的一个指针,
  6.构造函数调用其他构造函数的方式?
  ----------------------------------
    this() //调用构造函数,就是过程的重用过程
  7.回执java stack +heap的运行机制,如何调整堆和栈空间的大小。

  面向对象的三个特征:封装、继承和多态

  8.this关键字和super关键字的区别

  --------------------------------------------------

    属性的区别:this访问本类中的属性,如果本类中没有属性,则在父类中继续进行查找。super访问的是父类的属性。

    方法的区别:this访问的是本类的方法,如果本类中没有方法则在父类中继续进行相关的查找。super访问的是父类中的方法。

    构造函数的区别:this调用本类的构造,必须放在本类方法的行首,super调用父类的构造函数,必须放在父类构造方法的行首。

    2.this.变量和super(参数)方法

    this.变量调用当前对象的变量;super.变量直接调用父类中的变量

    3.this(参数)调用的当前类中的构造器

    super(参数)用于确认要使用父类中的哪个构造器

    4.在对拥有父类的子类在进行初始化的时候,父类的构造方法也会被执行,而且优先于子类的构造函数进行相关的执行;因为在每一个构造函数中的第一行都有一条默认的隐式语句

    5.this()和super()都只能写在构造函数的第一行

    6.this()和super不能存在于同一个构造函数中。1:this()和super()都必须写在构造函数的第一行;2:this()语句调用的是当前类的另一个构造函数而这个构造函数中必然有一个父类构造器,再使用super()又调用一次父类构造器,相当于调用了两次父类的构造器,编译不会通过

    7.this和suepr不能用于static修饰的变量、方法以及方法快;因为this和super都是指的是对象