六、类和对象

一、类定义和使用

1、类的定义
	class className {
		field;				//字段(属性)或者成员变量
		sex;
		color;
		
		method;			//	行为 或者 成员方法
		public void barks() {
			System.out.println(" wowowo");
		}
	}
  • class为定义类的关键字,className是类的名字,{ } 是类的主体。
  • 类中包含的内容称为类的成员,属性是用来描述类的,称为类的成员变量,方法主要是用来说明类具有那些功能,称为类的成员方法
  • 类只是一个模板,没有具体的意义。
  • 一个源文件只能存在一个主类(主类必须和源文件名称相同),主类用public class定义。class声明的普通类可以存在多个。
2、类的实例化

类的实例化 -> 通过类产生对象,就称为类的实例化。
1、在Java中使用关键字class定义的类,相当于在计算机中产生了一个新的类型。
class Student --> Student 和String一样,是一个新的类型。
2、通过产生的新类型产生具体对象,称为类的实例化。使用new关键字来产生对象!
语法格式: 类名称 引用名称 = new 类名称();

Dog dog = new Dog();

产生了Dog类的实例化对象,可以通过该对象 ”." 操作符就可以访问成员属性和成员方法.

二、构造方法

1、构造方法

构造方法:初始化对象调用构造方法,构造方法是为了产生对象,给对象属性做初始化操作。

特点:

  1. 构造方法名字与类名称相同,无法自定义名称
  2. 构造方法没有返回值类型声明–void
  3. 构造方法在创建对象时,由编译器自动调用,且只在对象产生时调用一次。
  4. 若在定义类时,没有明确定义构造方法,则编译器会编译时产生默认的无参构造;若在类中定义了构造方法,则默认的无参构造就不再生成!
    在这里插入图片描述
    注意参数
    在这里插入图片描述
class Dog{
	String name;
	String color;

	Dog(){			//构造方法  这个{ } 是编译器自动生成的;
		String name = null;
		String color = null;
		
		System.out.println("自己定义的无参构造方法");
	}
}

在这里插入图片描述

2、构造方法的重载

在这里插入图片描述

  • 可以有三个构造方法,无参的,有一个参数的,两个参数的;

三、this关键字

1、this 修饰成员变量

this.属性名称 --> 直接从类中寻找同名变量! 打破就近原则。
在这里插入图片描述

2、this 修饰方法
2.1、this 修饰成员方法,表示调用类中成员方法

语法: this.方法名称
在这里插入图片描述

2.2、this 调用构造方法(构造方法之间才可以相互调用)!!

语法: this(参数)   // 表示调用构造方法
在这里插入图片描述
在这里插入图片描述

3、this 调用

就指的是通过哪个对象来调用的方法或属性,this 就指代谁!我们就可以把this当作一面镜子,当前镜子前站的是哪个对象,this就指代谁!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由上可知,dog通过this调用test 返回的是dog,同理,dog1 返回的是dog1.

四、static 关键字

首先,看见 static 关键字与对象无关!
static 表示静态,与类相关,和具体的对象无关!

1、static 修饰属性,称为类属性,静态属性,存放在JVM的方法区

即,static定义的属性,是类中所以成员所共有的。
在这里插入图片描述
在这里插入图片描述
可以直接用 类名称.( 类属性) 调用!,可以不赋初值,即为String类型默认值 null 。


注意:在这里插入图片描述
引用值为null时,只有成员方法或成员变量才会NPE异常,静态方法静态变量不会报错!!

2、static修饰方法,类方法,直接通过类名称调用,与对象无关!

语法:类名称.方法名称()
在这里插入图片描述
在这里插入图片描述
调用静态方法的输出:
在这里插入图片描述

此外,像那些类的工具方法,如 Math.max(a,b) 就是通过Math类直接调用的。
在这里插入图片描述

3、static修饰静态域(静态属性,静态方法)和成员域(成员属性和方法)之间的联系
  • 不能在静态方法中调用成员方法或成员变量!
    因为static和对象无关,成员方法属性必须有对象才能调用。

  • 可以在成员方法中调用静态属性或静态方法!
    可以!,因为static没有对象就可以调用,何况有对象。

  • static不能直接修饰一个类,但是可以修饰内部类(一个类中嵌套一个类)!
    因为类就是为了产生对象!

4、static变量的初始化

静态变量一般就地初始化或者在静态代码块中初始化。
在这里插入图片描述

五、代码块

代码块:使用 { } 定义的一段代码称为代码块。根据代码出现的位置以及关键字的不同,分为以下四种代码块。

1、普通代码块

直接定义在方法内部,不加任何修饰符定义的代码块称为普通代码块 —> 解决变量重名问题 (用的很少)
在这里插入图片描述
在这里插入图片描述

2、构造块

直接定义在类中,使用 { } 的代码块称为构造块。

在这里插入图片描述
在这里插入图片描述

3、静态代码块

一般用于初始化静态变量,使用static修饰,直接定义在类中
语法:static { }
特点:静态代码块在类加载时执行一次,和具体产生对象无关! 若有多个静态代码块,按照代码的书写顺序一次执行!

在这里插入图片描述
在这里插入图片描述

注意:
主类中的静态代码块会优先于主方法执行!main存在于主类中,要执行方法首先得要将主类加载到JVM中,当主类一加载,主类中的静态代码块就被自动调用!
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KuKudebdw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值