2021-07-21面向对象入门——类与对象、构造函数

本文详细介绍了Java中的类与对象的概念,包括类的定义、成员变量、对象的创建、属性赋值以及访问方法。同时,还讨论了构造函数的作用和类型,以及this关键字和static关键字的使用。通过示例代码展示了如何创建和使用对象,以及构造函数的重载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类与对象

1. 类

类:一个类型,把有相似特征或者行为的一些事物认为是一个类别,有助于认知世界;是一个抽象概念,是人为了能够更好的理解,抽象出来的概念,并不存在!!!

一个类可以包含以下类型变量:

  • 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
  • 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
  • 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。

1.1 类的定义

使用关键字class

访问修饰[public|private|protected|默认] class 类名称 {
		
}

一般将java代码,写在一个Xxx.java文件,这个文件就是一个类,如果这个文件中存在多个类,注意:public只能修饰Xxx类(就是和文件名称相同的类,其他的类都不能使用public关键字修饰)如果要在该文件中写main函数,只能也写在这个类。

2. 对象

类中一个真正的事物!!!!是存在的一个真实案例(实例),有状态和行为。

注:java就是一门面向对象的编程

2.1 对象的创建

对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字 new 来创建一个对象。
  • 初始化:使用 new创建对象时,会调用构造方法初始化对象。
    类型 对象名称 = new 类型名称() [构造方法]

2.2 对象的属性赋值

对象名称.属性名称 = 值;

2.3 访问实例变量和方法

对象名称.方法名称([参数列表]);//访问方法
对象名称.属性名称 //访问属性的值

例子:

public class animal {
	String name = "love";
	int leg = 4;
	String color = "pink";
	
	protected void sleep() {
		System.out.println("is sleeping!!!");
	}
}
public class cat extends animal{
	public static void main(String[] args) {
		cat ani = new cat();
		System.out.print(ani.color +" ");
		System.out.print(ani.name +" ");
		ani.sleep();
	}
}

运行结果:

pink love is sleeping!!!

3.构造函数

构造函数是用来初始化新创建的对象的代码块。构造函数类似于java中的实例方法(Instance Method),但它不是一个方法(Method),因为它没有返回类型。简而言之,构造函数和方法是不同的。人们经常把Java中的构造函数称为特殊类型的方法。

注意:
1.构造函数的名称必须与与类名相同。
2.构造函数名与类名必须一致,并且没有返回类型。
3.每个类可以有一个以上的构造函数

构造函数的类型:默认构造函数、无参数构造函数和参数化构造函数。

  • 默认构造函数:如果在类(class)中没有定义代码来实现任何构造函数,Java编译器将会在编译的字节码里面为你插入默认构造函数。不会在源代码(java文件)中找到它,因为默认构造函数是在编译期间由编译器插入到代码中,并且存在于.class文件中,所以你在源代码(java文件)里面是看不到这个默认构造函数的。
class 类名{
	类名(){
	}
}
  • 无参数构造函数:不带参数的构造函数称为无参数构造函数,其形式看上去与默认构造函数相同,但是无参数构造函数里面可以有任何代码,而默认构造函数里面则是空的。
class 类名{
	类名(){
		system.out.println("hello word");
	}
}
  • 参数化构造函数:带参数的构造函数称为参数化构造函数。
class 类名{
	public 类名(String n,int m) { 
        name=n;
        age=m;        
    }
}
 

构造函数也是函数的一种,同样具备函数的重载(Overloding)特性。


class Person
{  
    public String name;
    public int age;
 
    Person()
    {
        System.out.println("1:name="+name+", age="+age);
    }
 	Person(int a)
    {
        System.out.println("2:name="+name+", age="+age);
    }
    Person(String n)
    {
        name = n;
        System.out.println("3:name="+name+", age="+age);
    }
 
    Person(String n,int a)
    {  
        name=n;
        age=a;
        System.out.println("4:name="+name+", age="+age);
    }
}
	public static void main(String[] args) {
		Person person = new Person("吉普赛");
		Person person1 = new Person();
		Person person3 = new Person("吉普赛",29);
		Person person2 = new Person(10);
		
	}

输出结果

3:name=吉普赛, age=0
1:name=null, age=0
4:name=吉普赛, age=29
2:name=null, age=0

4. this关键字

  • 在java中,this的关键字,this关键字是一个指针
  • 在类中,this默认指向当前类
  • 如果构造对象,当对象构造完成后,会有一个this指向当前对象

5. static关键字

static:静态的

  • 可以修饰java的类、属性、方法。
  • static如果修饰类,只能修饰内部类,也可以修饰属性,如果使用static修饰属性,该属性就是静态属性属于类。也可以修饰方法。静态方法,属于类。
  • static也可以直接单独使用,被static单独使用的语法块,静态块。(静态块:静态块会最先被类加载,而且只加载一次!!!)
  • static也可以修饰import(import static 包.*)
  • static修饰的东西,提前加载内存中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值