java基础(4)-成员变量和局部变量

成员变量
  1. 定义:
  • 成员变量存在于堆内存中,和类一起创建,成员变量有两种类型:实例变量或非静态变量(不以static修饰)、类变量或静态变量(以static修饰)。
  • 类作为成员变量时,只需创建好这个类的对象,赋值就可以了
  • 接口作为成员变量时,只需在主方法中创建好符合该接口的对象,可以通过实现类创建对象,可以通过匿名内部类的方式创建对象,也可以创建匿名对象。
  1. 实例:
//Weapon类
public class Weapon {
    private String name ;//武器的名称

    public Weapon(String name) {
        this.name = name;
    }
}
//Hero类
public class Hero {
    private String name;//英雄名称
    private Weapon weapon;//英雄用的武器
    public Hero(String name, Weapon weapon) {
        this.name = name;
        this.weapon = weapon;
    }
    public void attack(){//英雄的功能
        System.out.println(name+"正在用"+weapon.getName()+"打怪");
    }
}
//类作为成员变量
public class Demo01 {
    public static void main(String[] args) {
        /*类作为成员变量*/
        Weapon weapon = new Weapon("无尽之刃");//创建一个武器类的对象
        Hero hero = new Hero("周杰伦",weapon);//把武器类对象作为参数传给hero类的对象
        hero.attack();

//Weapon类
public class Weapon {
    private String name ;//武器的名称

    public Weapon(String name) {
        this.name = name;
    }
}
//Hero类
public class Hero {
    private String name;//英雄名称
    private Weapon weapon;//英雄用的武器
    public Hero(String name, Weapon weapon) {
        this.name = name;
        this.weapon = weapon;
    }
    public void setSkill(Skill skill) {
        this.skill = skill;
    }   
}
//Skill接口
public interface Skill {
    public abstract void use();
}
//Skill实现类
public class SkillImpl implements Skill {
    @Override
    public void use() {
        System.out.println("爱的魔力转圈圈!~~~~~");
    }
}
public class Demo01 {
    public static void main(String[] args) {
    	Weapon weapon = new Weapon("无尽之刃");//创建一个武器类的对象
        Hero hero = new Hero("周杰伦",weapon);//把武器类对象作为参数传给hero类的对象
    /*第一种,创建实现类使用*/
	    Skill skill = new SkillImpl();//创建多态对象Skill,
	    hero.setSkill(skill);
	    /*第二种,使用匿名内部类实现接口*/
	    Skill skill1 = new Skill() {
            @Override
            public void use() {
                System.out.println("爱的魔力转两圈!~~");
            }
        };
        hero.setSkill(skill1);
		/*第三种,使用匿名对象匿名内部类实现接口*/
		hero.setSkill(new Skill(){
            @Override
            public void use() {
                System.out.println("爱的魔力转三圈!~~");
            }
        });
局部变量

定义:形参、方法内定义的变量、代码块中定义的变量

成员变量和局部变量的区别
  1. 定义的位置不同
    成员变量:在类方法外
    局部变量:在方法中
  2. 在内存中的位置不同
    成员变量:堆内存中
    局部变量:栈内存中
  3. 生命周期不同
    成员变量:随着对象的创建而存在,随着对象的消失而消失
    局部变量:随着方法的调用而存在,方法调用完毕后消失
  4. 初始值不同
    成员变量:有默认的初始化值
    局部变量:没有默认的初始变化值,需定义赋值后才能使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值