Java类和对象(一)

本文介绍了Java中的类定义,包括实例变量、类变量和方法的声明。详细讲解了如何定义一个狗类,并探讨了类的实例化过程,通过构造函数对对象属性进行初始化。此外,还讨论了对象的内存模型,特别是对象创建后的内存分配情况。文章通过实例展示了如何使用构造函数创建和操作对象,以及如何调用类方法和实例方法。
摘要由CSDN通过智能技术生成

一.类的定义格式

1.1定义一个狗类

class Dog{
    public String name;//实例变量name
    public String color;//实例变量color
    public static String food="狗粮";//类变量food

    public void barks(){//实例方法 barks
        System.out.println("汪汪");
    }

    public void wag(){//实例方法 wag
        System.out.println("摇尾巴");
    }
    public static void eat(){//类方法eat
        System.out.println("吃"+Dog.food);//类变量使用方法 类名.类变量名
    }
}

1.2注意

1.一般一个文件中只定义一个类
2.main方法所在的类一般要使用public修饰
3.public修饰的类名必须要和文件名相同
4.public修饰的类名不能随便修改

二.类的实例化

类 类似定义了一种新的类型,用类类型创建对象的过程叫实例化

2.1一个简单的类

class Dog{
    public String name;//实例变量name
    public String color;//实例变量color
    public static String food;//类变量food

    public Dog(){

    }

    public Dog(String name,String color,String food){//构造方法赋值
        this.name=name;
        this.color=color;
        Dog.food=food;
    }

    public void barks(){//实例方法 barks
        System.out.println("汪汪");
    }

    public void wag(){//实例方法 wag
        System.out.println("摇尾巴");
    }

    public static void eat(){//类方法eat
        System.out.println("吃"+Dog.food);//类变量使用方法 类名.类变量名
    }
}
public class BlogDemo1 {
    public static void main(String[] args) {
        Dog dog3 = new Dog("旺财","炫彩金","黄金狗粮");//使用构造方法对对象的属性赋值
        Dog.eat();//类方法的使用   类名.静态方法名
        dog3.barks();
        dog3.wag();

        Dog dog1 = new Dog();//通过new实例化对象dog1
        dog1.name="阿黄";//实例变量通过对象调用  对象名.实例变量
        dog1.color="黄";
        Dog.eat();//类方法的使用   类名.静态方法名
        dog1.barks();//实例方法通过对象调用 对象名.实例方法
        dog1.wag();

        Dog dog2 = new Dog();//通过new实例化化对象dog2
        dog2.name="大黑";
        dog2.color="黑色";
        Dog.eat();//类方法的使用   类名.静态方法名
        dog2.barks();
        dog2.wag();
        }
}

1.类中 方法外的变量 可以不初始化值,未初始化的值有其默认值 (具体的默认值可以见我java数组的表),而方法中的变量必须有其初始值

2.2构造函数

1.构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。
2. 构造方法:名字与类名相同,没有返回值类型,设置为void也不行,一般情况下使用public修饰,在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
3.类中没有定义任何构造方法,编译器会默认生成一个不带参数的构造方法。 但如果定义构造方法后,编译器不会生成一个不带参数的构造方法,类中只有自己定义的构造方法

2.3对象的内存模型

对象是引用类型,内存类型和数组很相似,大家可以去看看博主的数组的内存空间内容。
1.声明对象是的内存模型
当用类声明一个对象时,如 Dog dog;
dog的内存空间还没有任何数据,这时的dog是一个空对象,空对象不能使用。即 dog的值为null。
2.为对象分配变量后的内存模型 eg:
dog = new Dog();
此时 name 和 color 这些实例变量作为对象的属性在堆上开辟空间,
new运算符将和类的构造方法计算一个叫引用的值赋值给 dog

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值