JAVA 类

发布于:2022-12-19 ⋅ 阅读:(342) ⋅ 点赞:(0)

目录

一、类定义和使用

注意事项

二、 类的实例化

注意事项

三、this引用

1、this引用的特性

四、初始化对象

1、构造方法

2、 就地初始化


一、类定义和使用

理解

类是用来对一个实体(对象)来进行描述的: 即 定义一个类型的物体:{他有什么属性;他有什么功能} java中定义类时需要用到class关键字

class ClassName{  
  field;  // 字段(属性) 或者 成员变量  
  method;// 行为 或者 成员方法
  }

内容

注意事项

  • **类名注意采用大驼峰定义 **
  • 成员前写法统一为public,后面会详细解释
  • 此处写的方法不带 static 关键字. 后面会详细解释


  • 一般一个文件当中只定义一个类
  • main方法所在的类一般要使用public修饰(注意:Eclipse默认会在public修饰的类中找main方法)
  • public修饰的类必须要和文件名相同
  • 不要轻易去修改public修饰的类的名称,如果要修改,通过开发工具修改

代码

class WashMachine{
  //类的属性
  public String brand; // 品牌
  public String type; // 型号
  public double weight; // 重量
  public double lenght; // 长
  public double weidth; // 宽
  public double height; // 高
  public String color; // 颜色
  
  //类的行为
  public void WashClothes(){ // 洗衣服
    System.out.println("洗衣功能");
  }
  public void dryClothes(){ // 脱水
    System.out.println("脱水功能");
  }
  public void SetTime(){ // 定时
    System.out.println("定时功能");
  }
}

二、 类的实例化

理解

定义类之后,就相当于制作好一张设计图纸 类的实例化就是将房子造出来

内容

注意事项

  • new 关键字用于创建一个对象的实例.
  • 使用 . 来访问对象中的属性和方法.
  • 同一个类可以创建对个实例.

代码

public class Main{
  public static void main(String[] args) {
    PetDog dogh = new PetDog(); //通过new实例化对象
    dogh.name = "阿黄";
    dogh.color = "黑黄";
    dogh.barks();
    dogh.wag();
    
    PetDog dogs = new PetDog();
    dogs.name = "阿黄";
    dogs.color = "黑黄";
    dogs.barks();
    dogs.wag();
  }
} 

输出结果:
阿黄: 旺旺旺~~~
阿黄: 摇尾巴~~~
赛虎: 旺旺旺~~~
赛虎: 摇尾巴~~~

三、this引用

理解

this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。

意思就是:谁调用这个类中的属性或者方法,谁就是这个this

内容

1、this引用的特性

 
  1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
  2. this只能在"成员方法"中使用
  3. 在"成员方法"中,this只能引用当前对象,不能再引用其他对象
  4. this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法。对象的引用传递给该成员方法,this负责来接收

代码中:testDate调用 .setDate 以及 .printDate方法,所以调用时里的this指的就是testDate

代码

public class TestDate {
    public int year;
    public int month;
    public int day;

    public void setDate(TestDate this,int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public void printDate(TestDate this){
        System.out.println(this.year+"-"+this.month+"-"+this.day);
    }

    public static void main(String[] args) {
        TestDate testDate = new TestDate();

        testDate.setDate(2022,8,6);
        /*testDate.year = 2022;
        testDate.month = 8;
        testDate.day = 4;*/
        testDate.printDate();

    }

}

四、初始化对象

理解

Java方法内部定义一个局部变量时,必须要初始化,否则会编译失败。

public static void main(String[] args) {
    int a;
    System.out.println(a);
} 
// Error:(26, 28) java: 可能尚未初始化变量a

如果是对象的话

public static void main(String[] args) {
    Date d = new Date();
    d.printDate(); //此处引用对象未声明
    d.setDate(2021,6,9);
    d.printDate();
} 
// 代码可以正常通过编译

那么问题:

  1. **每次对象创建好后调用SetDate方法设置具体日期,比较麻烦,那对象该如何初始化? **
  2. 局部变量必须要初始化才能使用,为什么引用声明之后没有给值依然可以使用

内容

1、构造方法

概念

构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次,用于初始化对象

重点:

  • 想要实例化对象,就一定会调用构造方法
  • 当我们没有提供任何构造方法时,编译器会帮我们提供一个不带参数的构造方法
  • 当构造方法调用完成后,对象才实际上产生了
  • 一旦用户定义,编译器则不再生成
  • 无参构造方法--内部给各个成员赋值初始值,该部分功能与三个参数的构造方法重复
  • 此处可以在无参构造方法中通过this调用带有三个参数的构造方法
  • this(1900,1,1);必须是构造方法中第一条语句
  • 不能形成环

代码

 public class Date {
        public int year;
        public int month;
        public int day;
        // 无参构造方法--内部给各个成员赋值初始值,该部分功能与三个参数的构造方法重复
        // 此处可以在无参构造方法中通过this调用带有本类中另一个三个参数的构造方法
        // 但是this(1900,1,1);必须是构造方法中第一条语句
        public Date(){
            //System.out.println(year); 注释取消掉,编译会失败
            this(1900, 1, 1);
        //this.year = 1900;
        //this.month = 1;
        //this.day = 1;
        } 
        // 带有三个参数的构造方法
        public Date(int year, int month, int day) {
            //this();这就形成环了
            this.year = year;
            this.month = month;
            this.day = day;
        }
    }

初始化所分配的空间:

数据类型 默认值
byte 0
char '\u0000'
short 0
int 0
long 0L
boolean false
float 0.0f
double 0.0
reference null

2、 就地初始化

在声明成员变量时,就直接给出了初始值。

注意:代码编译完成后,编译器会将所有给成员初始化的这些语句添加到各个构造函数中

代码

    public class Date {
        public int year = 1900;
        public int month = 1;
        public int day = 1;
        public Date() {
        }
        
        public Date(int year, int month, int day) {
        }
        public static void main(String[] args) {
            Date d1 = new Date(2021, 6, 9);
            Date d2 = new Date();
        }
    }


网站公告

今日签到

点亮在社区的每一天
去签到