一、方法的定义(函数,过程)
-
特点
1 方法都是可以被重复调用的
2 作用: 封装一段特定的业务逻辑功能
3 建议:方法要尽可能独立,一个方法只做一件事
4 优点:减少代码的重复,有利于代码的维护
只要是一个独立的业务功能,就可以封装到一个方法中
-
语法
修饰词 返回值类型 方法名(参数列表){
方法体;//完成一段特定的业务
}
-
修饰词
public:表示访问权限,表示公共的,公用的
static:表示为静态的内容,被这个词语修饰的方法只能在相同的静态方法中调用
protected:受保护的,本类,派生类,同包类- - 应用率低
默认的:什么 也不写,本类、同包
-
放回值类型
当调用方法之后,方法会不会反馈一个值给调用方继续使用
void:表示没有返回值
若没有返回值,返回的这个值是什么类型的,则返回值类型就写什么类型
注意:当后面需要使用到这个返回值时,就需要返回值,否则可以不用返回值(void)
-
方法名:当前方法的一个称呼(方法名在特定的条件下允许重名)
-
参数列表
可以有参数,也可以无参数,视情况而定
有参数的方法,更加灵活
-
方法的调用 :
1 若是在同一个类中调用方法,则可以直接使用方法名调用,若不是在同一个类中调用,则需要通过类名.方法名调用(静态)
2 调用有参数的方法时,必须进行传参,并且传入的参数要和方法中的形参的数据类型和个数相匹配
3 当调用有返回值的方法时,调用之后,这个值次序要被调用
1、方法的重载(overload): 方便用户的调用
发生在同一个类中,方法名相同,参数列表不同(类型不同,个数不同,位置不同)
编译器在编译时会根据方法的签名自动绑定方法( 重载与返回值类型无关,与参数名称无关,和参数类型有关)
public class t1 {
public void SayHi(){
System.out.println("hi");
}
public void SayHi(String name){
System.out.println(name +"你好");
}
public void SayHi(String name,int age){
System.out.println(name +"你好,我今年" +age +"岁了");
}
}
2、构造方法 - - 给成员变量赋初值
public class SeaObject{
int width;
int heigh;
public SeaObject(int width,int heigh){//构造方法与类同名,参数可变
this.width = width;
this.heigh = heigh;
}
}
构造方法又叫:构造函数、构造器、构建器
作用:给成员变量赋初始值
语法:与类同名,没有返回值类型
调用:在创建(new)对象时被自动调用
若自己不写构造方法,则编译器默认提供一个无参的构造方法,若自己写了构造方法,则不默认提供
构造方法也可以重载
-
this (指向当前对象)
1、指代当前对象,哪个对象调用方法它指的就是哪个对象
2、只能用在方法中,在方法中访问成员变量之前默认有个this.
-
this.成员变量名 - - 访问成员变量
-
this.方法名()- - - 调用方法(一般不用)
-
this() - - 调用构造方法(用的少)
-
补充
1 成员变量和局部变量是可以同名的,使用时默认采取就近的原则,此时若想访问成员变量,this不能省
2、null 表示空,没有指向任何对象,只能赋值给引用数据类型。若引用的值为null,则该引用不能再进行任何操作了,若操作则发生NullPointerException空指针异常
-
补充:super:指代当前对象的超类对象
super的用法:
super.成员变量名- - 访问超类的成员变量
super.方法名():- - 调用超类的方法
super():- - 调用超类的构造方法 ⭐⭐⭐
4、return的作用
将需要返回给调用方的数值进行返回,并且表示当前方法的结束
若使用在没有返回值的方法中,表示结束当前方法的执行
二、面向对象三大特性:封装,继承,多态
1.封装:封装一段特定的业务逻辑代码
1)类:封装对象的属性和行为,作为一个整体来操作
2)方法:封装一段特定的业务逻辑功能实现
3)访问控制修饰符: 封装的是具体的访问权限(隐藏数据,暴露行为),保护数据安全
2.继承:代码复用性好
1、作用:代码复用
2、超类:所有派生类所共有的属性和行为
接口:部分派生类所共有的属性和行为
派生类:派生类所特有的属性和行为
3、单一继承,多接口实现,具有传递性
3.多态:多种形态--为了代码复用
1、对象多态:所有对象都是多态的- - 通过向上造型来体现
行为多态: 所有抽象方法都是多态的- -通过向上造型+方法的重写来体现
2 、向上造型(能点的就少了)、向下转型(强制类型转换)、instanceof判断
3.1、向上造型/自动类型转换:- -就是多态
超类型得引用指向派生类得对象
能点出来什么,看引用类型
能造型成为得类型有:超类+所实现的接口
3.2、向下转型/强制类型转换: 成功的条件只有如下俩种:
1、引用所指向的对象,就是该类型
2、引用所指向的对象,实现了该接口或继承了该类
强转时若不符合如上条件,则发生ClassCastException类型转换异常
建议:在强转之前先通过instanceof来判断引用的对象是狗时该类型
何时需要强转:若想访问的变量/方法在超类中没有,则需要强转