java面向对象编程(2021.5.8)
作者:互联网
2.1 成员变量
2.1.1 成员变量的概述
变量可以分为成员变量和局部变量,成员变量是在类范围内定义的变量,
局部变量是在类范围内定义的变量
成员变量分为:(实例变量、类变量)
局部变量分为:(形参、方法局部变量)
成员变量与局部变量的区别:
1.在类中的位置不同
2.在内存中的位置不同
3.生命周期不同
4.初始值
2.1.2 成员变量的使用
1.成员变量在使用之前,需要先进行声明,
2.声明成员变量是在类的内部、方法的外部定义的变量,成员变量分为实列变量和类变量。
3.实例变量作用域是当前所属实例的范围,类的成员变量的作用域是整个类范围。成员变量的声明要给出变量名、变量类型以及其他特性,其语法如下:
【修饰符 tatic][<变量类型><变量名>
示例1:
public class Hero{
String name;
int age;
public static void main(String[ args){
Hero hero1 new Hero();
hero1.name="德鲁伊";
hero1.age=45;
Hero hero2 new Hero();
System.out.(英雄hero1的名字:+hero1.nme+"t"+"年龄+hero1.age)
System.ou. printin("英雄hero2的名字:"+hero2.nme+"\t"+"年龄:"+hero2.age)
}
}
实例属性内存分配示意图:
2.2 this关键字
Java提供了一个this关键字,this关键字总是指向调用该方法的对象
2.2.1 方法中调用方法或成员变量
this关键字最大的作用就是让类中的一个方法访问该类中的另一个方法或实例成员变量假设定义了一个Hero类
示例:
public class Hero{
∥定义jump()方法
public void jump(){
System.out. println("---英雄遇到了障碍需要跳过去---)
∥定义run(方法
public void run(){
System.out. println("---执行run()法英雄正在奔跑---");
Hero hero= new Hero();//创建Hero对象
System.outt. printIn("her对象已经被创建内存地址为"+hero. hashCode+,它将实行jump法
hero.jump();//调用run()方法
}
}
执行效果如下:
2.2.2 解决实例变量与局部变量同名的问题
如果方法中的一个局部变量和实例变量同名,但程序又需要在该方法中访问该实例变量,则必须使用this前缀。具体情况如下:
public class Hero
String name定义实例属性name
public void setName(String name){
name=name;∥此处易混淆,可读性差
public static void main(Stringl] args){
∥创建Hero对象
Hero hero=new Hero()
hero. setName("风暴精灵");调 setName用()方法
System.out t. printIn("hero的名字为:"+hero.name)
2.3 隐藏与封装
2.3.1 封装的概念(现实生活中)
1.封装是面对象的三大特性之
2.封装将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法实现对内部信息的操作和访问。
3.封装是面向对像编程语言对客观世界的模拟,客观世界中的属性均被隐藏在对象内部,外界无法直接操作和修改
封装可以实现的目的:
(1)总藏类的实现细节。
(2)让使用者只能通过事先预定的方法访问数据,从而可以在该方法中加入控制逻辑,限制对属性的不合理访(3)可进行数据检查,从而有利于保证对象信息的完整性。
(4)便于修改,提高代码的可维护性
需要考虑的两点:
(1)隐藏对象的属性和实现细节,不允许外部直接访问。
(2)暴露出方法,让方法控制对这些属性进行安全的访问和操作。因此,封装实际上有两个方面的含义隐藏该隐藏的,暴露该暴露的。这两个方面都需要通过使用Java提供的
示例:
public class Hero(
//使 private用修饰属性,隐藏这些属性
private String name;
private int age;
提供方法操作name属性
public void setName(String name)(
∥执行合理校验,要求用户名必须在2~6之间
if(name. length() >6name. length()<2){
System.out. printIn("您输入的名字不符合要求")
return;
Jelse{
this.name name;
public String getName(){
return name
∥提供方法操作age属性
public void setAge(int age){
11执行合理校验,要求用户年龄必须在0~100之间
if(age>100 age<0)
System,out, printin("您输入的年龄不合法")
return
Jelse{
public int getAge()
return age;
标签:java,name,成员,Hero,面向对象编程,2021.5,方法,public,变量 来源: https://blog.csdn.net/slcos/article/details/117734375