Java从入门到精通(14)------继承,多态

时间:2022-02-14 21:54:11
Java从入门到精通(14)

回顾: 构造方法


构造方法也称为"构造函数",它是在实例化对象时,由系统调用的方法


构造方法的特点:

1、与类名同名
2、没有返回类型
3、该方法是由系统调用的方法
4、该方法是类中第一个调用的方法
--------------------------------------------------
一个类中,可以有多个构造方法,但至少要保证有一个,如果用户没有写任何的构造方法,系统就会自动的提供一个默认构造方法


Java中的一些系统关键字

static----静态的

这个关键字,可用于修饰属性与方法


用static修饰的属性,称为“静态属性”,在一个类中,静态属性只会初始化一次


一个类,被实例化时,类中的"普通属性",将会重新变成初始值





static修饰的属性,称为“静态属性”,一个类,不管被实例化多少次,类中的静态属性,都会初始化一次(只会赋一次初值)


----------------------------------------------------------------------------------
static 修饰的方法,称为“静态方法”,也称为"类方法"

一个类中的静态方法,不需要实例化,通过类名.方法名称()就可以调用

 注意:静态方法会比普通方法消耗更多的系统资源,会降低程序的性能,所以,除非有必要,否则,不要轻易定义静态方法


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

在一个静态方法,可以直接调用另一个静态方法。

在主函数中,也可以直接调用类中其他静态方法,不需要实例化对象



在一个静态方法中,不允许直接调用普通方法,必须先创建类的对象,然后通过对象来调用普通方法


-------------------------------------------------
在一个静态方法中,可以直接调用类中的其他静态方法

静态方法,只能去访问静态属性,不允许直接访问普通属性

静态方法可以直接访问静态属性

------------------------------------------------
普通方法,可以直接访问静态属性



静态方法只能访问静态属性
普通方法既能访问普通属性,也可以访问静态属性


static 

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

extends  继承


继承是面向对象编程中,一个非常重要的概念


继承的概念要涉及到子类与父类




“食草动物”是从“动物类”演变而来,所以,我们称"动物类"为父类,“食草动物”为子类


“食肉动物”是从“动物类”演变而来,所以,我们称"动物类"为父类,“食肉动物”为子类


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

两个类之间,如果存在父类与子类的关系,父类拥有属性与方法,子类可以直接继承过来使用


代码之间,如何继承:
      子类          父类

父类与子类的的识别:          ???   is  a  ???






使用继承,就可以实现代码重用,父类有的方法、属性,子类不需要定义就可以直接来使用











public class 子类名  extends 父类{


}




java中,一个子类只能继承一个父类(单继承)

一个父类可以拥有多个子类


父类、基类、超类


子类、派生类





子类继承父类,可以继承所有上级类的方法与属性



在java中,所有的类,最终都是默认继承于Object这个类

Object类是所有类的最*的父类


父类中有的方法,在子类中,被重新声明,这种情况,称为“方法的重写”,这时候,子类调的将不再是父类的方法,而子类中重写以后的方法



java中创建对象的方式:


子类   obj = new   子类();

父类   obj = new   父类();

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

父类  obj = new 子类();

//创建一个子类对象,指向父类的引用

这种方式创建的对象,调用的方法,其实是子类重写以后的方法


多态:对象在不同情况下的不同表现形式


java中的多态主要体现在两个方面:

1、方法重写   override (方法重写)

2、方法重载   overload (方法重载)





方法重写:

父类的方法名称,在子类被重新声明,这种情况,就称为“方法重写”



方法重载:
它是在一个类中,有多个方法,方法名称一样,只是方法的参数个数,或者是参数的类型不同,这种情况,就称为“方法重载”


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

方法重载是多态在一个类中的体现

方法重写是多态在子类与父类中的体现

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

构造方法能不能重写?构造方法能不能重载?

构造方法,只能被重载,不能被重写


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

方法重写,是父类的方法,在子类中被重新定义,这时候访问的方法,其实是访问的被子类重写以后的方法,父类的方法这时候会被隐藏



如果希望访问父类被隐藏的方法,可以通过一个关键字:  super()


super.父类被隐藏的方法();