Java 类与对象

目录

一、类是什么

1 面向对象

2 面向对象与面向过程

二、类定义和使用

1 类的定义格式

 2 练习定义一个狗类

三、类的实例化

四、this引用

五、对象的构造与初始化

1 构造方法与初始化

 2 默认初始化

3 就地初始化


一、类是什么

关于类是什么,我们需要对java的面向对象的思想有一定的认识

1 面向对象

Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。


2 面向对象与面向过程

手洗衣服就是面向洗衣服整个过程,一步一步设计,最后洗完衣服,非常繁琐,少一步可能都会导致这个过程执行不下去,按照该种方式来写代码,将来扩展或者维护起来会比较麻烦。

机洗衣服就是面向四个对象:人、衣服、洗衣粉和海尔洗衣机,用户不需要关注衣服是怎么洗的怎么甩干的,只需要将衣服放进洗衣机,倒入洗衣粉,启动开关即可,通过对象之间的交互来完成的。

面向对象程序设计关注的是对象,而对象是现实生活中的实体,比如:海尔洗衣机(美的也可以)。但是洗衣机计算机并不认识,需要开发人员告诉给计算机什么是洗衣机。开发人员可以采用某种面相对象的编程语言来进行描述,比如:Java语言

Java语言中的类就是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干 啥),描述完成后计算机就可以识别了。

洗衣机类

属性:品牌、型号、重量、颜色等等

功能:洗衣、脱水等

在Java语言中,如何对上述的洗衣机类来进行定义呢?


二、类定义和使用

1 类的定义格式

class WashMachine{  //洗衣机类
    //成员属性/成员变量
    public String brand;    //品牌
    public String type; //类型
    public int weight;  //重量
    public String color;    //颜色

    //成员方法
    public void wash(){ //洗衣服功能
        System.out.println("洗衣服");
    }
    public void dry(){  //脱水功能
        System.out.println("脱水");
    }
}

class 为定义类的关键字,WashMachine 为类的名字,{} 中为类的主体。

类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量。方法主要说明类 具有哪些功能,称为类的成员方法。

【注意】

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

 2 练习定义一个狗类

public class PetDog{    //多了一个public
    public String type; //类型
    public String name; //名字
    public int age; //年龄

    public void bark(){
        System.out.println(name + "汪汪!!");
    }
    public void wag(){
        System.out.println(name + "摇尾巴~~");
    }
}

【注意】

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

三、类的实例化

定义了一个类,就相当于在计算机中定义了一种新的类型,与int,double类似

用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。

比如宠物狗是一个类,有金毛、哈士奇和拉布拉多等等,年龄不一样,名字不一样,就都是不一样的对象,类只是一个模型一样的东西,用来对一个实体(对象)进行描述,限定了类有哪些成员。一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量

以 宠物狗类 为例,再定义一个文件TestDog

public class TestDog{
    public static void main(String[] args) {
        PetDog mydog = new PetDog();    //类的实例化
        mydog.name = "小狗";
        mydog.type = "哈士奇";
        mydog.age = 4;
        mydog.bark();
        mydog.wag();
    }
}

//输出结果
//小狗汪汪!!
//小狗摇尾巴~~

【注意】

  1. new 关键字用于创建一个对象的实例。
  2. 使用 . 来访问对象中的成员变量和方法。
  3. 同一个类可以创建多个实例化对象。 

四、this引用

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

【特性】 

this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型

this只能在"成员方法"中使用

在"成员方法"中,this只能引用当前对象,不能再引用其他对象

结合后面的构造方法一起讲 


五、对象的构造与初始化

1 构造方法与初始化

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

//PetDog.java
public class PetDog{
    public String type;
    public String name; 
    public int age; 

    //构造方法
    public PetDog(String type,String name,int age)
    {
        this.type = type;   //当形参和实参名字相同时,
        this.name = name;   //this来告诉编译器这个type、name和age
        this.age = age;     //是属于哪个对象的
    }

    public void bark(){
        System.out.println(name + "汪汪!!");
    }
    public void wag(){
        System.out.println(name + "摇尾巴~~");
    }
}

//TestDog.java
public class TestDog{
    public static void main(String[] args) {
        PetDog mydog = new PetDog("哈士奇","小狗",4);    //简化啦
        mydog.bark();
        mydog.wag();
    }
}
//输出结果一样

【特性】

  1. 名字必须与类名相同
  2. 没有返回值类型,设置为void也不行
  3. 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次)
  4. 构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)
  5. 如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的。注意:一旦用户定义了构造方法,编译器则不再生成无参的默认构造方法。
  6. 构造方法中,可以通过this调用其他构造方法来简化代码,this(...)必须是构造方法中第一条语句
public class PetDog{
    public String type; 
    public String name; 
    public int age;

    //构造方法(与下面那个是方法的重载(参数列表不一样))
    public PetDog(){
        //this调用下面那个构造方法来完成初始化
        this("金毛","大狗",5);
    }
    public PetDog(String type,String name,int age)
    {
        this.type = type;   
        this.name = name;  
        this.age = age;     
    }

    public void bark(){
        System.out.println(name + "汪汪!!");
    }
    public void wag(){
        System.out.println(name + "摇尾巴~~");
    }
}

public class TestDog{
    public static void main(String[] args) {
        PetDog mydog = new PetDog("哈士奇","小狗",4);
        PetDog mydog1 = new PetDog();   //调用无参的那个构造方法
        mydog.bark();
        mydog.wag();
        mydog1.bark();
        mydog1.wag();
    }
}

//输出结果
//小狗汪汪!!
//小狗摇尾巴~~
//大狗汪汪!!
//大狗摇尾巴~~

 2 默认初始化

为什么局部变量在使用时必须要初始化,而成员变量可以不用呢?

要搞清楚这个过程,就需要知道 new 关键字背后所发生的一些事情:

在程序层面只是简单的一条语句,在JVM层面需要做好多事情,下面简单介绍下:

(1)检测对象对应的类是否加载了,如果没有加载则加载

(2)为对象分配内存空间

(3)处理并发安全问题

        比如:多个线程同时申请对象,JVM要保证给对象分配的空间不冲突

(4)初始化所分配的空间

        即:对象空间被申请好之后,对象中包含的成员已经设置好了初始值,比如:

数据类型默认值
byte0
char'\u0000'
short0
int0
long0L
booleanfalse
float0.0f
double0.0
referencenull

(5)设置对象头信息(后续介绍)

(6)调用构造方法,给对象中各个成员赋值

        所以构造方法的作用就是对对象中的成员进行初始化,并不负责给对象开辟空间。


3 就地初始化

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

public class PetDog{
    public String type = "金毛"; //就地初始化
    public String name = "大狗";
    public int age;
}

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


  • 33
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Java类与对象Java语言的核心概念之一,理解它们对于Java编程非常重要。以下是一些Java类与对象的知识点: 1. 类是对象的模板,对象是类的实例。 2. 类可以包含属性(变量)和方法(函数)。 3. 类的属性可以是基本类型或对象类型。 4. 类的方法可以是静态的或实例的。 5. 实例变量和方法可以通过对象访问。 6. 静态变量和方法可以通过类名访问。 7. 构造函数是用来创建对象的特殊方法。 8. 类可以继承其他类,从而获得父类的属性和方法。 9. 继承可以实现代码重用和多态性。 10. 接口是一种类似于抽象类的结构,它定义了一组方法,但没有实现。 11. 实现接口的类必须实现接口定义的所有方法。 12. 包是一种组织代码的方式,它可以避免命名冲突。 13. 访问修饰符(public、protected、private)用于限制类、属性和方法的访问范围。 14. Java提供了垃圾回收机制,自动回收不再使用的对象。 15. 对象的生命周期由它们的引用决定,当没有引用指向对象时,它们会被垃圾回收器回收。 以上是Java类与对象的一些基本知识点,希望能对你有所帮助。 ### 回答2: Java类是面向对象编程的基本概念之一。一个类是一个模板或蓝图,用于创建具有相同属性和方法的对象。类由属性(变量)和方法组成。 对象是类的实例化。通过使用new关键字,我们可以创建一个对象并引用它。对象包含类定义的属性的具体值。可以通过调用对象的方法来操作和访问对象的属性。 类和对象Java编程中非常重要。它们可以帮助我们模拟真实世界中的问题和实体。以下是一些关于Java类和对象的重要知识点: 1. 类的声明:在Java中,通过使用关键字class可以声明一个类。类的声明包含类的名称和类体。 2. 对象的创建:要创建一个对象,我们使用new关键字并调用类的构造方法。构造方法被用来初始化对象的属性。 3. 属性和方法:类由属性和方法组成。属性是类的特征和数据的容器,而方法是用于操作和访问属性的行为。 4. 封装:Java类支持数据封装。通过将属性声明为私有,并提供公共的get和set方法,可以保护属性,从而实现数据封装。 5. 继承:继承是面向对象编程中的一种重要概念。通过继承,一个类可以从另一个类获得属性和方法。Java支持单继承,一个类只能继承另一个类。 6. 多态:多态是指一个对象可以具有多个形式。在Java中,多态性是通过继承和方法重写实现的。 7. 构造方法:构造方法是类的一个特殊方法。它用于创建和初始化对象。 8. this关键字:this关键字用于引用当前对象的属性和方法。 9. static关键字:static关键字用于修饰类的成员。静态成员被共享,可以在不创建对象的情况下访问。 10. 包:包用于组织和管理类,防止命名冲突。 这些是Java类和对象的一些重要知识点。理解和掌握这些知识点可以帮助我们在Java编程中更好地使用类和对象,并能够设计和实现复杂的应用程序。 ### 回答3: Java类是一种面向对象编程的基本概念。它是用来描述现实世界中具有相同特征和行为的对象的模板。在Java中,类可以看作是创建对象的蓝图或者是对象的抽象。类包含了对象的属性和方法,通过创建类的实例,可以实现对这些属性和方法的访问。 类的属性是描述对象特征的变量,也叫做成员变量。可以用来表示对象的状态。类的方法是用来描述对象行为的函数,也叫做成员函数。可以用来表示对象的行为。类可以有多个属性和方法,通过类的实例化可以创建多个对象对象是类的实例,也就是通过类创建的具体个体。对象具备了类的特性,可以访问类的属性和方法。可以通过new关键字来创建对象,并调用对象的方法。对象可以独立存在,可以具有独立的状态和行为。 类和对象是面向对象编程中的核心概念,它们是实现封装、继承和多态的基础。封装是将对象的属性和行为封装在类中,通过控制访问权限来实现对象的信息隐藏。继承是通过继承一个父类来创建一个新的类,并继承父类的属性和方法。多态是指一个类的实例可以以多种形式来使用,通过继承和实现接口来实现多态。 了解和掌握类和对象的知识点对于Java编程非常重要。它是面向对象编程的基础,可以帮助我们更好地理解和设计程序,提高代码的可维护性和可扩展性。掌握类和对象的知识点,也是进一步学习Java的面向对象特性和高级编程技术的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值