面向对象
之前的输入操作Scanner和随机数操作Random 都new了一个对象input1和ran供后续使用。这个应该就是面向对象了。
java中类的使用:
![]()
自己定义的类的属性写在方法外面,自己定义的类中方法(函数)没有static。
上面是一个自定义类的实例,由此看出Scanner和Random相当于是两个Java本来就有的类。
自定义类之后创建类的对象进行使用:
1.创建对象的格式:
类名 自己定义的对象名 = new 类名();
2.使用对象的成员变量:
对象名.成员变量; //不仅可以访问,还能进行修改
3.使用对象成员方法的格式
对象名.成员方法();
定义不同的对象计算机会给分配不同的内存空间,也许初始属性都相同,但是不同对象经过不同操作之后就有各自不同的属性了。
成员变量和局部变量:(作用域的范围在自己所属的大括号中)
成员变量和局部变量重名的时候,JAVA采用就近原则。
this关键字:可以区分局部变量和成员变量的重名问题,如果方法和类中的属性出现重名,可以使用this来对类的变量属性和方法进行访问。
示例:
可以发现this和定义的对象是同一个地址,也就是说,定义一个新对象,就会生成一个新对象专属的this关键字。
相当于python类当中的init初始化,在创建对象的时候该方法会自动执行一次。
下面是一个实例:
输出:
在创建use1对象时构造方法camera被自动执行。
构造方法数据初始化实例:
private :只能在同一个类中使用
default : 同一个类中,同一个包中
protected : 同一个类中,同一个包中,不同包的子类
public : 任意位置访问
上面这个例子中,name只能由类camera中的成员函数调用,方法print1也只能被类中的其他方法调用,所以在main方法(也就是类camera之外)中不能使用private的name属性和private的print1方法。这就是private的意义!
JavaBean标准当中要求成员变量都要私有,并且对外提供getXXX , setXXX 方法
上面是一个标准实例,快捷生成方式,右键-生成-构造函数/Getter/Setter
![]()
还有希望吗???