* 方法什么时候定义为静态的?
* 方法描述的是动作,当所有的对象执行这个动作的时候,最终产生的影响是一样的,那么这个动作已经不属于某一个对象的动作了,可以将这个动作提升为类级别的动作,模板级别的动作。
* 静态方法中无法直接访问实例变量和实例方法。
* 大多数方法都定义为实例方法,一般一个行为或者一个动作在发生的时候,都需要对象的参与。
* 但是也有例外,例如:大多数“工具类"中的方法都是静态方法,因为工具类就是为了方便编程,为了方便方法的调用,自然不需要new对象是最好的。
总结:
class 类{
静态代码块;
实例代码块;
静态变量
实例变量
构造方法
静态方法
实例方法
* this
* static
}
————————————————————————————————————————————————————————————————
* 关于Java语言当中的继承:
* 1、继承是面向对象三大特征之一,三大特征分别是:封装、继承、多态
* 2、继承“基本”的作用是:代码复用。但是继承最“重要”的作用是:有了继承才有了以后“方法的覆盖”和“多态机制”
* 3、继承语法格式:
【修饰符列表】 class 类名 extends 父类名{
类体=属性+方法
}
* 4、java语言当中的继承只支持单继承,一个类不能同时继承很多类,只能继承一个类 。在C++中支持多继承。
* 5、关于继承中的一些术语:
B类继承A类,其中:
A类称为:父类、基类、超类、superclass
B类称为:子类、派生类、subclass
6、在Java语言当中子类继承父类都继承哪些数据呢?
-私有的不支持继承
-构造方法不支持继承
-其它数据都可以被继承
7、虽然java语言当中只支持单继承,但是一个类也可以间接继承其它类,例如:
C extends B{
}
B extends A{
}
A extends T{
}
C直接继承B类,但是C类间接继承T、A类。
8、java语言中假设一个类没有显示的继承任何类,该类默认继承JavaSE库当中提供的java.lang.Object类。
Java语言中任何一个类中都有Objiect类的特征。
//MyEclipse快捷键:查找类型【Open Type】-->ctrl+shift+t
//MyEclipse快捷键:查找资源【Open Resource(资源)】-->ctrl+shift+r
* 回顾java语言当中的方法的重载
1、方法重载又称为Overload
2、方法重载什么时候使用?
当在同一个类当中,方法完成的功能是相似的,建议方法名相同,这样方便程序员的编程,就像在调用一个方法似的。代码美观。
3、什么条件满足之后构成方法重载?
* 在同一个类当中
* 方法名相同
* 参数列表不同:类型,数量,顺序
4、方法重载和什么无关?
* 和方法的返回值类型无关
* 和方法的修饰符列表无关
4、方法的覆盖:
1、方法覆盖又被称为方法重写,英语单词:Override【官方的】/Overwrite【非官方的】
2、什么时候使用方法重写?
当父类中的方法已经无法满足当前子类的业务需求,
子类有必要将父类中继承过来的方法进行重新编写,
这个重新编写的过程称为方法重写/方法覆盖。
3、什么条件满足之后方法会发生重写呢?【代码满足什么条件之后,就构成方法的覆盖了呢?】
* 方法重写发生在具有继承关系的父子类之间
* 方法重写的时候: 返回值类型相同,方法名相同,形参列表相同
* 方法重写的时候:访问权限不能更低,可以更高。
方法重写的时候:抛出异常不能更多,可以更少。【以后讲,讲完异常之后才能解释 】
4、建议方法重写的时候尽量复制粘贴,不要编写,容易出错,导致没有产生覆盖。
5、注意:
* 私有方法不能继承,所以不能覆盖。
* 构造方法不能继承,所以不能覆盖。
* 静态方法不存在覆盖。【讲完多态之后解释】
* 覆盖只针对方法,不针对属性。
* 关于java语言当中的多态语法机制:
* 1、Animal、Cat、Bird 三个类之间的关系:
* Cat继承Animal
* Bird继承Animal
* Cat和Bird之间没有任何继承关系
3、关于多态中涉及到的几个概念:
*向上转型(upcasting)
子类型- ->父类型
又被称为:自动类型转换。
*向下转型(downcasting )
父类型- ->子类型
又被称为:强制类型转换。【需要加强制类型转换符】
* 需要记忆:
无论是向上转型还是向下转型,两种类型之间必须要有继承关系。没有继承关系,程序是编译通过的。