Java基础——类和对象

一、类和对象的关系

类是规范,根据类的定义来创建对象,而对象是实体,需要被创建,帮我们完成具体的事物

类可以被看作是一段DNA,它定义了一个对象的结构和特性。就像DNA包含了个体的遗传信息一样,类也包含了一个对象的所有属性和方法。

而对象则是类的实例,就像根据DNA的遗传信息,一个个具体的生物个体被创造出来一样,通过类,我们可以创建出一个个具体的对象。每个对象都有它自己的属性和方法,这些属性和方法来自它所属的类

二、利用类来创建对象

Person person = new Person();

Person是一个类,用于表示一个人的信息。通过使用 new 关键字,我们创建了一个新的 Person 对象,并将其引用赋值给 person 变量。所以,我们可以说 person 是 Person 类的一个实例。

Person(前):在Java中,将类名或接口名放在变量名前是一种声明类型的方式。这种方式表明这个变量是什么类型的实例。

New:用于创建一个新的对象实例。当使用new关键字时,Java会在堆内存中分配空间来存储该对象,并将对象的引用赋值给一个变量。

New Person:在这个表达式中,“Person”是类名,表示我们想要创建一个Person类的实例。这个语法会调用Person类的构造函数,并返回一个新的Person对象,然后我们可以将这个对象的引用赋值给一个变量,如“person”。

三、定义类

类是一种抽象的概念,它代表了一组具有相似属性和行为的对象的集合。类是面向对象编程的基本概念之一,它是一种将数据和操作封装在一起的程序模块。

在面向对象编程中,类是一种创建对象的模板,它定义了该对象的基本结构和属性以及可用的操作。通过类,我们可以创建具有相同属性和行为的多个对象。

定义一个类通常包括以下几个要素:

  1. 类的名称:一个类通常有一个唯一的名称,用于标识该类的对象。
  2. 类的属性:属性是类的特征或状态信息,它描述了该类对象的共同特征。属性可以是基本数据类型、复杂数据类型或者其他类的实例。
  3. 类的方法:方法是类的行为或操作,它定义了该类对象可以执行的操作。方法可以是实例方法或类方法,其中实例方法作用于类的对象实例,而类方法作用于类的本身。

下面是一个简单的Java类的定义示例:

	public class Person { 
	// 属性定义 
	private String name; 
	private int age; 
	// 方法定义
	public Person(String name, int age) { 
	this.name = name; 
	this.age = age; 
	} 
	public String getName() { 
	return name; 
	} 
	public void setName(String name) { 
	this.name = name; 
	} 
	public int getAge() { 
	return age; 
	} 
	public void setAge(int age) { 
	this.age = age; 
	} 
	}

 

在这个示例中,我们定义了一个名为Person的类,它具有两个属性nameage,以及一些相应的方法用于访问和修改这些属性的值。通过这个类的定义,我们可以创建多个Person对象,每个对象都有自己的名字和年龄属性,并且可以通过类的方法对其进行操作。

四、成员变量和成员函数

  1. 成员变量是定义在类中的变量,每个类对象都有自己的一组成员变量,存储在堆内存中。成员变量可以是基本类型(如int、double等)或引用类型(如String、数组等)。通常情况下,我们使用访问修饰符(public、private、protected)来限制对成员变量的访问权限。
  2. 成员函数是定义在类中的函数,每个类对象都有自己独立的一组实例方法,在调用时会操作该对象所表示的数据。与成员变量一样,我们可以使用访问修饰符来限制对实例方法的访问权限。
  3. 成员函数可以直接访问同一个类中的成员变量。在类的内部,可以通过对象名(或类的实例名)加上“.”运算符来访问成员变量。例如,在上面的例子中,可以通过this.name来访问Person类中的name成员变量。
  4. 成员函数可以修改成员变量的值。在类的内部,可以通过对象名(或类的实例名)加上“.”运算符来访问和修改成员变量的值。例如,在上面的例子中,可以通过this.setName("John")来修改Person类中的name成员变量的值。
  5. 成员函数可以调用同一个类中的其他成员函数。在类的内部,可以通过对象名(或类的实例名)加上“.”运算符来调用其他成员函数。例如,在上面的例子中,可以通过this.printInfo()来调用Person类中的printInfo()成员函数。

总之,成员变量和成员函数是相互关联的,它们共同构成了类的属性和行为。成员变量存储了类的状态信息,而成员函数则定义了类对象的行为和操作方式。通过在成员函数中访问和修改成员变量的值,可以实现类的状态变化和行为执行。

this

在Java中,this关键字是一个引用,它指向当前对象实例。在类的成员变量或方法中,this引用了当前对象的内存地址。通过使用this关键字,我们可以在类的方法中引用类的其他成员变量或方法,而无需使用对象名。

例如,假设我们有一个名为Person的类,它具有一个名为name的成员变量和一个名为getName()的方法:

public class Person {  
private String name;  
public String getName() {  
return this.name; // 使用this引用当前对象的name成员变量  
}  

在上面的例子中,this.name引用的是当前对象的name成员变量。在getName()方法中使用this.name可以避免与方法参数名称冲突,也可以使代码更加清晰易懂。

这是因为this关键字指向的是当前对象实例,它引用的成员变量和成员方法都是属于该对象的。

成员变量和本地本地变量的生命周期

成员变量是类的属性,它们与类实例化对象相关联,并在对象的生命周期内一直存在。成员变量会在对象创建时进行初始化,并在对象被销毁时释放所占用的内存空间。

本地变量是在成员函数内部定义的变量,它们的生命周期仅限于成员函数的执行期间。当成员函数被调用时,这些本地变量会被创建并存储在栈上,用于在函数执行期间保存数据。一旦函数执行完毕,这些本地变量的生命周期就会结束,它们所占用的内存空间会被释放。

五、初始化对象

直接赋值

这是最常用的一种初始化方法。在声明成员变量的同时,直接给它们赋一个初始值。例如: 

class MyClass {  
    int x = 10;  // 在声明时直接赋值  
    String str = "Hello";  
}

如果在程序中并未给变量赋值,系统就会自动给变量赋值为0。

构造函数

当成员变量不能在声明时直接赋值,或者需要根据某些条件来赋值时,我们通常会在构造函数中初始化这些成员变量。

具体调用哪个构造函数是由是否有参数和有什么类型的参数决定的。当创建一个对象时,会调用与该对象类型相匹配的构造函数来初始化对象。如果没有指定要调用的构造函数,编译器会默认调用无参数的构造函数。

public class MyClass {    
    private int x;    
    private int y;   
 private int z;    
      public MyClass(int x, int y) {    
        this(0); 
        this.x = x;    
        this.y = y;    
    }    
    public MyClass() {    
        z=0;  
    }       
public MyClass(int z) {    
        this.z=z;  
    }     
}

六、重载函数

在Java中,函数重载是指在同一个类中可以有多个名称相同但参数列表不同的方法。这些方法通常完成相似的功能,但对输入参数有不同的要求。通过函数重载,我们可以使用相同的方法名来完成不同的操作。重载函数是通过不同的参数来区别的。

函数重载的条件如下:

  1. 方法名必须相同。
  2. 参数类型、数量、顺序至少有一项不同。
  3. 返回类型和异常类型不要求相同。

例如,我们可能有如下的一个类:

public class Demo { 
void show(int num1, int num2) { 
// 方法体 
} 
void show(String str) { 
// 方法体 
} 
void show(int num1, int num2, String str) { 
// 方法体 
} 
}

在这个例子中,show方法被重载了三次,每次的方法名都是相同的,但是参数的数量和类型是不同的。这样,我们就可以根据需要调用不同的show方法。

七、变量和对象的关系

变量是基本数据类型或对象类型的实例,而对象是类的实例。

在Java中,对象和变量之间是一对多的关系。一个对象可以被赋予给多个变量,

假设有一个名为"person"的对象,你可以将"person"的引用分别赋值给三个变量a、b和c。这样,你就可以通过这三个变量来访问"person"对象的属性和方法。

Person person = new Person("John", 25);  
Person a = person;  
Person b = person;  
Person c = person;

需要注意的是,当一个对象被赋予给多个变量时,它们都引用的是同一个对象。对其中一个变量所做的修改会影响到其他变量所引用的对象。因为它们都指向同一个内存地址,所以它们会共享同一个对象的状态。

变量在程序中代表了某个值或对象。变量本身并不是实际存在的实体,它只是一个标识符,用于存储和引用数据或对象。在程序运行时,变量可以代表不同的值或对象,这些值或对象可以是实际存在的实体。通过使用变量,我们可以方便地对这些值或对象进行操作和引用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值