Java基础 学习笔记17

实例方法

可能不太准确,但是先这样去记忆


实例方法 = 对象方法 = 没有添加static关键字
调用实例方法 = new 一个对象再去调用

在这里插入图片描述


演示代码一

Vip.class

package chapter3.oop02;

public class Vip {
    //类 = 属性(状态) + 方法(行为)
    //姓名
    String name; //实例变量(对象变量)

    //年龄
    int age; //实力变量(对象变量)

    //会员行为
    //购物行为
    //通常描述一个对象的行为动作时,不加static

    //没有添加static的方法,被叫做实例方法(对象方法)
    //必须需要一个对象才能执行

    public static void shopping(){
        //加staic才能用VIP类去调用
        //否则必须new一个对象去调用

        System.out.println("正在购物");
    }

}

VipTest.class

package chapter3.oop02;

public class VipTest01 {
    public static void main(String[] args) {
        //创建一个vip对象
        Vip vip1 = new Vip();
        vip1.name = "momo";
        vip1.age = 20;

        System.out.println("name =" + vip1.name);
        System.out.println("name =" + vip1.age);

        //再创建一个Vip对象
        Vip vip2 = new Vip();
        vip2.name = "fangfang";
        vip2.age = 16;

        System.out.println("name =" + vip2.name);
        System.out.println("name =" + vip2.age);

        //去购物
        //实例方法需要使用“引用.”来调用
        vip2.shopping();


        Vip.shopping();

        /*
            为什么name和age不能使用“类名.”访问?
            实例变量如果需要访问,必须先new对象,通过引用来访问实例变量
            实例变量不能通过类名来直接访问
         */
//        System.out.println(Vip.name);


    }

}


演示代码二

animal.class

package chapter3.oop03;
/*
    宠物类
 */
public class animal {
    //名字
    String name;

    //生日
    String birth;

    //性别
    char sex;

    //行为动作
    //吃
    public void eat(){
        System.out.println("宠物在吃东西");
    }

    //跑
    public void run(){
        System.out.println("宠物在运动");
    }

}
package chapter3.oop03;

public class animalTest01 {
    public static void main(String[] args) {
        //创建宠物对象

        animal dog = new animal();
        dog.name = "放放";
        dog.birth = "2020.3.16";
        dog.sex = '男';

        //读取属性的值
        System.out.println("狗狗的名字" + dog.name);
        System.out.println("狗狗的生日" + dog.birth);
        System.out.println("狗狗的性别" + dog.sex);

        animal rabit = new animal();
       rabit.name = "一一";
       rabit.birth = "2020.3.16";
       rabit.sex = '女';

        //读取属性的值
        System.out.println("兔子的名字" + rabit.name);
        System.out.println("兔子的生日" + rabit.birth);
        System.out.println("兔子的性别" + rabit.sex);
    }

}


空指针异常

引用 一旦为null ,便是引用不再指向对象了。
但是通过引用访问name属性,编译可以通过。
运行时出现异常:空指针异常。

NullPointerException是一个著名的异常

为什么会出现空指针异常?
因为运行的时候会找真正的对象,如果对象不存在了就会出现这个异常。

package chapter3.oop03;

public class animalTest02 {
    public static void main(String[] args) {
        Animal dog = new Animal();
        dog.name = "放放";
        dog.birth = "2020.3.16";
        dog.sex = '男';

        //读取属性的值
        System.out.println("狗狗的名字" + dog.name);
        System.out.println("狗狗的生日" + dog.birth);
        System.out.println("狗狗的性别" + dog.sex);

        dog = null; //编译时不报错,运行时出错(空指针异常)
        System.out.println(dog.name);//空指针异常
    }

}

在这里插入图片描述
在执行代码之后

dog = null

dog引用(dog局部变量)保存的地址 0x12 (指向堆内存中pet实例对象) 变为 null地址
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值