Java se之类和对象

2023-12-13 13:14:39

类的定义格式

class ClassName{
//属性(成员变量)
//行为(成员方法)
}

1>变量与方法
1.成员变量:普通成员变量
静态成员变量
2.成员方法:普通成员方法
静态成员方法
其中的静态变量与方法,在后面的封装里面讲述

注意点
1>不建议一个Java文件里面创建多个类,建议是创建一个类放在一个Java文件里面
2>main方法所有的类一般要使用public修饰
3>public修饰的类必须和文件名相同
4>不要轻易去修改public修饰的类的名称,如果要修改就用工具来(在idea里面,就是先选中名字然后右键,点击refactor,再点击rename就可以改名,但是这个是只针对java只有一个类的时候)

如何去自定义

class PetDog{
    //这里就是属性
    public String name;
    public String color;

    //这下面是方法,也叫行为
    public void barks(){
        System.out.println(name + "旺旺~~~~");
    }
    public void wag(){
        System.out.println(name + "摇尾巴~~~");
    }

}
public class Test {
    public static void main(String[] args) {
        PetDog petDog = new PetDog();
        petDog.name = "小黄";
        petDog.color = "黄色";
        System.out.println(petDog.name);
        petDog.barks();
        petDog.wag();
    }
}

在这里面的话,我们在上面创建了一个类,我们去使用这个类的时候,我们是要去通过new实例化一个对象, 就是 PetDog petDog = new PetDog();这个, 我们在实例化的时候不止可以实例化一个,可以实例化无数个对象
然后里面的petDog.name = “小黄”;和 petDog.color = “黄色”;,就是我们在给我们实例化的对象附一个值,取名为小黄,颜色为黄色,
在后面的petDog.barks();和petDog.wag();这两个里面,因为我们那前面的时候就给名字和颜色进行初始化了,所以我们直接引用这两个方法就可以了,里面的name已经被赋值为小黄了
在这里插入图片描述
最后的运行结果就是这样的
注意
1>new关键字是用于创建一个对象的实例
2>使用 . 来访问对象中的属性和方法
3>同一个类可以创建多个实例

this的引用

public class Date {
    public int year;
    public int month;
    public int day;
    public void setDate(Date this, int y,int m,int d){
        this.year = y;
        this.month = m;
        this.day = d;
    }

    public static void main(String[] args) {
        Date date = new Date();
        date.setDate(1999,1,1);

        Date date1 = new Date();
        date1.setDate(1899,1,1);
    }

}

this的特征:
1>this的类型对应类 类型引用,即哪个对象调用就是哪个对象引用类型
2>在成员方法中,this只能引用当前对象,不能再引用其他对象
3>在一个成员方法中,可以用this来调用另一个成员方法

只有一个方法,如何知道给哪个对象赋值??
答:通过Date this以及this.year= y这几个来进行判断给谁赋值

如何初始化对象

1>就地初始化
定义成员变量的时候,就直接初始化

2>构造方法:
注意点:
1.无返回值
2.方法名必须和类名相同
3.在整个对象的生命周期内,只调用一次(只有在对象实例化的时候才会调用)

class Student{
    public String name;
    public int age;
    public Student(){
        this.name = "张三";
        this.age = 9;
    }
}

像图中的public Student(){ }.就是一个构造方法,

实例化对象的关键两步?
1>为对象分配内存
2>调用合适的构造方法
注意这个合适!!!
因为我们在代码中,只写了成员变量,没有写任何一个构造方法的时候,java中会自动提供一个不带参数的构造方法,若是有存在构造方法,编译器就不会提供(总结就是救急不救穷);

作用:
对,对象中的成员进行初始化,并不负责开辟空间

构造方法的定义和使用

public Student(){
        this.name = "张三";
        this.age = 9;
        System.out.println("student().....");
    }

    public Student(String name,int age){
        this.name = name;
        this.age = age;
        System.out.println("Student(String,int).......");
    }

上图这种,就存在两个构造方法
注意:
1>构造方法可以有多个,且构成重载关系
2> 当上面这两种情况都存在的时候,可以通过传参的方式来进行初始化

Student student = new Student("悟空",19);

或者如果使用idea的话,可以先右键,再Generate,然后constructor快捷生成构造方法

构造方法中,可以通过this来调用其他的构造方法来简化代码
例如

class Student{
    public String name;
    public int age;
    public Student(){
        this("张三",9);
    }
    public Student(String name,int age){
        this.name = name;
        this.age = age;
    }
}
public class Test {
    public static void main(String[] args) {
        Student student = new Student();
        System.out.println(student.name);
        System.out.println(student.age);
    }
}

在这里插入图片描述
可以像上面的代码一样,通过this来直接调用
但是1>只能出现在构造方法中
2>不能自己调用自己
3>只能出现在当前构造方法的第一行,如果有其他东西就会报错

文章来源:https://blog.csdn.net/weixin_52689187/article/details/134853487
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。