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.父类被隐藏的方法();