Day07 构造方法 this

阅读: 评论:0

Day07 构造方法 this

Day07 构造方法 this

1 方法重载

几个方法的功能一样,但是参数列表不同——可以使用方法的重载来实现

方法重载:同一个类中:几个方法 方法名相同 参数列表不同的现象

方法重载要求(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) {}
}

2 成员变量 局部变量

成员:类组成的一员
成员变量:类中定义的变量
成员方法:类中定义的方法
局部变量:方法中定义的变量(方法参数列表,方法体)

成员变量和局部变量的区别

成员变量:类中直接定义的变量

局部变量:方法中定义的变量

**相同之处:**都是变量 来接收数据的

不同之处:

  • 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;//局部变量}
}

3 构造方法

构造方法: 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 作用不同: 构造方法作用创建对象
普通方法 表示当前类创建的对象具有指定功能

4 this 关键字

this:当前对象
使用场景1:当成员变量和局部变量重名时 方法中变量名默认指向的局部变量
通过this.变量名来指向成员变量
注意:方法中调用的成员(成员变量+成员方法) 前面默认有this.
使用场景2:构造方法之间的相互调用通过 this(参数列表)
注意:构造方法中:this(参数列表) 必须是当前方法的第一个语句

5 给属性赋值方式

​ 现实:

​ 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 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23