- 1.在main方法中使用 2.调用格式: 方法名();
- 定义方法注意事项
- this的含义
this
的使用格式 :this.成员变量名;- 继承的好处
- 继承的格式
- 抽象方法
- 接口定义格式
- 继承父类并实现多个接口
- 四丶多态
- 1.什么是多态
- 多态的前提
- 3.3 多态格式
- 多态的好处和弊端
- 向下转型
1.在main方法中使用 2.调用格式: 方法名();
1.方法必须先创建才可以使用,该过程成为方法定义
2.方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用
定义方法格式:
修饰符 返回值类型 方法名(参数列表){
//代码省略…
return 结果;
}
修饰符
: public static固定写法
返回值类型
: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者
参数列表
: 方法在运算过程中的未知数据,调用者调用方法时传递
return
: 将方法执行后的结果带给调用者,方法执行到 return ,整体方法运行结束
小贴士:return 结果; 这里的”结果”在开发中,我们正确的叫法成为方法的返回值
定义方法注意事项
1.定义位置:类中方法外,不能嵌套定义
2.方法必须先定义,再使用
3.void表示无返回值,可以省略return,也可以单独的书写return
4.不能在return后面写代码,return意味着方法结束,所有后面的代码记永远都不会执行,属于无效代码
5.定义方法时()中的参数,我们称之为:形式参数,在调用该方法时传递的参数,我们称之为:实际参数
方法的重载:
1.指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。 2.参数列表:个数不同,数据类型不同,顺序不同。 3.重载方法调用:JVM通过方法的参数列表,调用不同的方法。
注意事项
* 重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
* 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载
注意 :
基本数据类型的参数,形式参数的改变,不影响实际参数
对于引用类型的参数,形式参数的改变,影响实际参数的值
二丶类
含义:
类是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
定义:
类的组成是由属性和行为两部分组成
属性:在类中通过成员变量来体现(类中方法外的变量)
行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可
类的格式:
public class ClassName {
//成员变量
//成员方法
}
创建对象的格式
类名 对象名 = new 类名();
访问类中的成员:
对象名.成员变量;
对象名.成员方法();
成员变量默认值:
1.封装:
原则
将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。
如何封装:
使用 private 关键字来修饰成员变量。
对需要访问的成员变量,提供对应的一对 getXxx 方法 、setXxx 方法
private 使用格式:
private 数据类型 变量名 ;
this的含义
this代表所在类的当前对象的引用(地址值),即对象自己的引用。 记住 :方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。** **
this
的使用格式 :this.成员变量名;
构造方法的格式: 修饰符 构造方法名(参数列表){ 有参 // 方法体 } 修饰符 构造方法名(){ }无参 注意事项: 1. 如果你不提供构造方法,系统会给出无参数构造方法。 2. 如果你提供了构造方法,系统将不再提供无参数构造方法。 3. 构造方法是可以重载的,既可以定义参数,也可以不定义参数。(一般使用个数不同)
2.继承
含义:
继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。
继承的好处
提高代码的复用性。
类与类之间产生了关系,是多态的前提
继承的格式
通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下:
- class 父类 { … }
class 子类 extends 父类 { … } - 子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用super关键字,修饰父类成员变量,类似于之前学过的this
- 使用格式:super.父类成员变量名
- 方法的重写
- 如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写(Override)。
- 方法重写:子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。
注意事项:
- 子类方法覆盖父类方法,必须要保证权限大于等于父类权限。
2. 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样
访问构造方法的注意事项:
- 在子类构造方法中的第一行默认有 super() ,给父类进行初始化的
- 在子类构造方法中可以手动调用父类其他重载的构造方法
格式: super(参数列表);
- 在子类构造方法中可以手动调用父类其他重载的构造方法
- super 是写在子类的构造方法的第一行.
- 继承的特点:
- Java只支持单继承,不支持多继承
- Java支持多层继承(继承体系)
- 顶级父类Object时所有类的父类(所有类都直接或间接继承Object)
- 子类和父类是一种相对的概念
- 一个父类可以有很多个子类
- 3.
3.抽象方法
什么是抽象方法
只有方法的声明,没有方法体的方法,就是抽象方法
什么是抽象类
抽象方法
使用abstract关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。
定义格式
修饰符 abstract 返回值类型 方法名 (参数列表);
6.4 抽象的注意事项
- 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。理解:假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义。
- 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。
- 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设计。
- 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类理解:假设不重写所有抽象方法,则类中可能包含抽象方法。那么创建对象后,调用抽象的方法,没有意义。
接口定义格式
接口用关键字interface修饰
public interface 接口名 {}
2.1.3 接口的使用
接口是不能创建对象,必须有实现类才能使用,类实现接口用implements表示
public class 类名 implements 接口名 {}
==注意: 接口的实现类必须重写接口中的所有的抽象方法,要么该类是一个抽象类==
继承父类并实现多个接口
之前学过,在继承体系中,一个类只能继承一个父类。而对于接口而言,一个类是可以实现多个接口的,这叫做接
口的多实现。并且,一个类能继承一个父类,同时实现多个接口。
2.5.1 多实现格式
class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3… {
// 重写接口中抽象方法【必须】
// 重写接口中默认方法【不重名时可选】
}
注意事项:
- 接口中,有多个抽象方法时,实现类必须重写所有抽象方法。如果抽象方法有重名的,只需要重写一次即可!如果实现类继承了父类,这个父类是一个抽象类时,我们还需要再重写抽象类中的所有抽象方法。
接口中只有常量和抽象方法
接口是没有静态代码块和构造方法的。
- public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB { // 覆盖重写所有抽象方法}
一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。 单继承多实现
如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。
四丶多态
1.什么是多态
多态是继封装、继承之后,面向对象的第三大特性。
生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也是不一样的。可见,同一行为,通过不同的事物,可以体现出来的不同的形态。多态,描述的就是这样的状态。定义:同一个对象,在不同时刻表现出来的形态是不同的
多态的前提
要有继承或实现关系
- 要有方法的重写
- 要有父类引用指向子类对象3.3 多态格式
普通类多态的格式
-
抽象类多态的格式
接口多态的格式
接口 对象名 = new 接口实现类();
多态的好处和弊端
3.5.1 多态的好处
提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作
3.5.2 多态的弊端
3.5.3 多态的好处代码演示
实际开发的过程中,父类类型作为方法形式参数,传递子类对象给方法,进行方法的调用,更能体现出多态的扩展性与便利 多态中的转型
向上转型
多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的。
使用格式: