几个方法的功能一样,但是参数列表不同——可以使用方法的重载来实现
方法重载:同一个类中:几个方法 方法名相同 参数列表不同的现象
方法重载要求(3: 1 同一个类
2 方法名相同
3 参数列表不同:参数类型不同 参数个数不同 参数顺序不同
对返回值类型和修饰符 无要求
重载的方法:功能基本一致
重载方法和普通方法一样 互相之间没有影响 只是调用时不能只通过方法名来区分 还需要参数列表
重载 类似于 现实同卵双胞胎
class Student{int add(int a,int b) {}int add(int a,int b,int c) {}double add(int a,double b) {}double add(double a,int b) {}
}
成员:类组成的一员
成员变量:类中定义的变量
成员方法:类中定义的方法
局部变量:方法中定义的变量(方法参数列表,方法体)
成员变量和局部变量的区别
成员变量:类中直接定义的变量
局部变量:方法中定义的变量
**相同之处:**都是变量 来接收数据的
不同之处:
1 定义位置不同
2 作用域不同
3 可用的修饰符不同:
public static final int a=1; //成员变量
final int b; //局部变量
4 是否有默认初始值:成员变量有默认初始值 局部变量没有
class Demo02{public static final int a=1;//成员变量int aa;//成员方法void show(int c) {//c 局部变量final int b;//局部变量}
}
构造方法: constructor
用于构建、创造对象的方法
public class Demo03Constructor {public static void main(String[] args) {//创建对象:new 对象类型();Demo03 d1=new Demo03();//没有定义此方法 但可以使用 说明编译器自动添加d1.show();}
}
class Demo03{int a;void show() {System.out.println("a="+a);}void Demo03() {//This method has a constructor nameSystem.out.println("void Demo03() ");}
//构造方法没有返回值 不用void标识Demo03() {System.out.println("Demo03() ");}Demo03(int a) {System.out.println("Demo03(int a) ");}
}
1 方法名必须和类名相同
2 构造方法不能被对象调用
3 构造方法被关键字new调用 调用一次就创建一个新的对象
4 一个类如果没有定义构造方法 编译器默认添加一个无参数的构造方法
如果有构造方法 编译器不再添加
5 构造方法 没有返回值 不用void标识
1 格式不同:构造方法没有返回值 不用void标识
普通方法必须有返回值类型标识 没有返回值 用void标识
2 命名不同:构造方法名字必须和类名相同
普通方法名字可以是类名(不规范)
3 调用不同:构造方法被关键字new调用,调用一次就创建一个对象,构造方法不能被对象调用;
普通方法只能被对象调用 一个对象可以调用多次普通方法
4 是否有默认:一个类如果没有定义构造方法 默认有一个无参数的构造方法
普通方法没有默认
5 作用不同: 构造方法作用创建对象
普通方法 表示当前类创建的对象具有指定功能
this:当前对象
使用场景1:当成员变量和局部变量重名时 方法中变量名默认指向的局部变量
通过this.变量名来指向成员变量
注意:方法中调用的成员(成员变量+成员方法) 前面默认有this.
使用场景2:构造方法之间的相互调用通过 this(参数列表)
注意:构造方法中:this(参数列表) 必须是当前方法的第一个语句
现实:
1 买一辆出厂颜色就是红色的车
2 自己刷漆
3 4s店刷漆
4 定制一个红色的车
给成员变量赋值的方式:
1 在类中直接给成员变量赋值:所有对象出厂属性都是此值
String logo=“bmw”;
2 通过对象.属性 给属性赋值:只能给当前对象属性赋值 必须先创建对象
c12.number=“豫A 88888”;
3 通过普通方法的参数列表给属性赋值:只能给当前对象属性赋值 先创建对象 通过对象调用方法
Demo05Car c13=new Demo05Car(400);
4 通过构造方法的参数列表给属性赋值:只能给当前对象属性赋值 对象一创建 就有指定的属性值
c14.setColor(‘黑’);
工作中给属性赋值:
1 不常见
2 禁止使用
3 经常使用 建议使用 实现属性值可控
4 经常使用 建议使用 实现属性值可控
public class Demo05SetValue {public static void main(String[] args) {Demo05Car c11=new Demo05Car();//类中定义那些变量 此类创建的对象就拥有那些属性c11.show();Demo05Car c12=new Demo05Car();c12.number="豫A 88888";// 方式2:对象.属性给属性赋值// 特点:只能给当前对象的属性赋值 并且需要先创建对象c12.show();//方式4:通过构造方法的参数列表给属性赋值//特点:只能给当前对象的属性赋值 对象一创建 此属性就是指定的值Demo05Car c13=new Demo05Car(400);c13.show();Demo05Car c14=new Demo05Car(200);//方式3:通过普通方法的参数列表给属性赋值//特点:只能给当前对象的属性赋值 需要先创建对象 然后通过对象调用方法 c14.setColor('黑');//c14.age=-10;c14.setAge(10);c14.show();}
}
class Demo05Car{int age;String logo="bmw";//方式1:在类中直接给成员变量赋值 此类创建的所有对象的此属性默认值都是此值char color;String number;float money;void show() {System.out.println(logo+":"+color+":"+number+":"+money+":"+age);} Demo05Car(){}Demo05Car(float money){//构造方法的参数列表一般是给属性赋值=money;}void setColor(char color) {lor='红';//lor=color;}void setAge(int age) {if(age<=0||age>120) {return;}this.age=age;}
}
本文发布于:2024-02-02 14:47:35,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170685645444509.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |