【类与对象JAVA(详)】(一)

博主头像

🌠个人主页 : @赶路人- -
🌌个人格言 :

要努力成为梧桐,让喜鹊在这里栖息。
要努力成为大海,让百川在这里聚积。

5.line,n.(数据,程序)行,线路 [laɪn] 6.if,conj.如果 [ɪf]

1.类与对象的初步认知

!:如果您是已经学过java语言或者学过其他OOP(面向对象语言)可以跳过第1点,从第2点 类和类的实例化开始。

面向对象概念

  1. 面向对象是思考问题的一种思考方式,是一种思想。比如:概念与实例。理论与实践。名和实等等。
  2. 类就是一类对象的统称。对象就是这一类具体化的一个实例。
  3. 面向对象的好处:将复杂的事情变简单了,只要面对一个对象就行

面向对象设计

面向对象设计把握一个重要的经验:谁拥有数据,谁对外提供操作这些数据(私有)的方法! (被动的一方是数据的拥有者,主动的一方是执行者)
开发时:找对象,建对象,用对象,并维护对象之间的关系。

简而言之:
面向对象就是用代码(类)来描述客观世界的事物的一种方式. 一个类主要包含一个事物的属性和行为

2.类和类的实例化

基本语法:

//创建类
class <class_name>{
	field;//成员属性
	method;//成员方法
}

//实例化对象
<class_name><对象名> = new <class_name>();

class为定义类的关键字,ClassName为类的名字,{}中为类的主体。
类中的元素称为:成员属性(成员变量)。类中的函数称为:成员方法。

命名规范: 类名一般采用大驼峰,变量名、方法名采用小驼峰。

示例:

class Person {
	public int age;//成员属性 实例变量
	public String name;
	public String sex;
	public void eat() {//成员方法
		System.out.println("吃饭!");
	}
	public void sleep() {
		System.out.println("睡觉!");
	}
}

类的实例化
用类类型创建对象的过程,称为类的实例化

public class Main{
	public static void main(String[] args) {
		Person person = new Person();//通过new实例化对象
		person.eat();//成员方法调用需要通过对象的引用调用
		person.sleep();
		//产生对象 实例化对象
		Person person2 = new Person();
		Person person3 = new Person();
	}
}

输出结果:
吃饭!
睡觉!

!

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

3.类的成员

类的成员可以包含以下:字段、方法、代码块、内部类和接口等。
此处我们重点介绍前三个.

3.1字段/属性/成员变量

在类中, 但是方法外部定义的变量. 这样的变量我们称为 “字段” 或 “属性” 或 “成员变量”(三种称呼都可以, 一般不会严格区分).
用于描述一个类中包含哪些数据
示例:

class Person {
	public String name; // 字段
	public int age;
}
class Test {
	public static void main(String[] args) {
	Person person = new Person();
	System.out.println(person.name);
	System.out.println(person.age);
	}
}
// 执行结果
null
0

!

  • 使用.访问对象的字段
  • “访问”包括了读和写。
  • 对于一个对象的字段如果没有显示设置的初始值,那么会被设置一个默认的初值。

默认值规则

  • 各种数字类型, 默认值为 0.
  • 对于 boolean 类型, 默认值为 false.
  • 对于引用类型(String, Array, 以及自定制类), 默认值为 null

字段就地初始化
不希望字段使用默认值, 而是需要我们显式设定初值. 可以这样写:

class Person {
	public String name = "赶路人";
	public int age = 18;
}
class Test {
	public static void main(String[] args) {
		Person person = new Person();
		System.out.println(person.name);
		System.out.println(person.age);
	}
}

执行结果
赶路人
18

3.2成员方法

用于描述一个对象的行为.

class Person {
	public int age = 18;
	public String name = "张三";
	public void show() {
		System.out.println("我叫" + name + ", 今年" + age + "岁");
	}
}
class Test {
	public static void main(String[] args) {
		Person person = new Person();
		person.show();
	}
}

执行结果
我叫张三, 今年18岁

此处的 show 方法, 表示 Person 这个对象具有一个 “展示自我” 的行为.
这样的 show 方法是和 person实例相关联的. 如果创建了其他实例, 那么 show 的行为就会发生变化

Person person2 = new Person();
person2.name = "李四";
person2.age = 20;
person2.show()

输出结果
我叫李四, 今年20岁

方法中还有一种特殊的方法称为 构造方法 (construction method)
在实例化对象的时候会被自动调用到的方法, 方法名字和类名相同, 用于对象的初始化.
虽然我们前面已经能将属性就地初始化, 但是有些时候可能需要进行一些更复杂的初始化逻辑, 那么就可以使用构造方
法.

3.3总结

!

class Person {
	public int age;//实例变量 存放在对象内
	public String name;//实例变量
	public String sex;//实例变量
	public static int count;//类变量也叫静态变量,编译时已经产生,属于类本身,且只有一份。存放在方法区
	public final int SIZE = 10;//被final修饰的叫常量,也属于对象。 被final修饰,后续不可更改
	public static final int COUNT = 99;//静态的常量,属于类本身,只有一份 被final修饰,后续不可更改
	//实例成员函数
	public void eat() {
		int a = 10;//局部变量
		System.out.println("eat()!");
	}
	//实例成员函数
	public void sleep() {
		System.out.println("sleep()!");
	}
	//静态成员函数
	public static void staticTest(){
		//不能访问非静态成员
		//sex = "man"; error
		System.out.println("StaticTest()");
	}
}
public class Main{
	public static void main(String[] args) {
		//产生对象 实例化对象
		Person person = new Person();//person为对象的引用
		System.out.println(person.age);//默认值为0
		System.out.println(person.name);//默认值为null
		//System.out.println(person.count);//会有警告!
		//正确访问方式:
		System.out.println(Person.count);//《类名.》访问
		System.out.println(Person.COUNT);
		Person.staticTest();
		//总结:所有被static所修饰的方法或者属性,全部不依赖于对象。
		person.eat();
		person.sleep();
	}
}

输出结果:
0
null
0
99
StaticTest()
eat()!
sleep()!

数据属性的内存布局:
数据属性的内存布局图

  • 59
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值