初识面相对象深入理解、构造方法--学习JavaEE的day12

day12

一、初识面相对象深入理解

需求:

创建人类的对象,并操作对象

分析:

人类 - Person

属性:name、sex、age

方法:eat、sleep

场景:创建多个对象,去操作对象

复制代码
public class Person {

//成员变量
String name;
char sex;
int age;

//成员方法
public void eat(){
	System.out.println(this.name + "吃饭饭");
}

//成员方法
public void sleep(){
	System.out.println(this.name + "睡觉觉");
}

//静态方法
public static void method(){
	System.out.println("静态方法");
}

}

//测试类:该类中有main方法,测试我们写好的代码
public class Test01 {
	public static void main(String[] args) {
		
	Person p1 = new Person();
	Person p2 = new Person();
	
	p1.name = "奇男子";//一个一个赋值
	p1.sex = '男';
	p1.age = 22;
	
	p2.name = "星宫一花";
	p2.sex = '女';
	p2.age = 24;
	
	p1.eat();
	p1.sleep();
	
	p2.eat();
	p2.sleep();
	
	Person.method();
	
}

}

面向对象深入理解图

面向对象内存图

小结

1.class文件只加载一次

​ 2.class文件中包含了该类所有的信息

​ 3.new对象会在堆中开辟空间,存放成员变量

​ 4.成员变量系统会赋默认值

​ 5.每个对象独享一份成员变量

​ 6.方法中的this表示调用该方法的对象

​ 7.成员方法可以使用this

​ 8.静态方法使用类名调用,所以方法内不能使用this

二、构造方法

前言 - 创建对象的语法:类型 引用 = new 构造方法;

分类:

无参构造和有参构造

含义:

与类名相同,且没有返回项的方法

作用:

​ 1.和new关键字在一起表示创建对象

​ 2.初始化数据

注意:

​ 1.创建对象的过程Person p = new Person();,也叫做实例化

​ 2.当类中没有有参构造时,系统会默认实现无参构造;反之不会默认实现

​ 3.构造方法可以重载的

有参构造好处:创建对象时,把数据赋值给该对象

经验:

类中编写了有参构造,我们记得把无参构造加上

需求:创建人类,操作对象

复制代码
public class Person {	

//成员变量
String name;
char sex;
int age;

//构造方法 - 无参构造
public Person(){
	System.out.println("无参构造");
	
	//初始化数据
	this.name = "默认值";//不写this也是默认使用用this
	this.sex = '男';
	this.age = 0;
}

//构造方法 - 有参构造
public Person(String name,char sex,int age){
	
	System.out.println("有参构造");
	
	this.name = name;//不写this会报错,将传进来的参数赋值给对象的属性
	this.sex = sex;
	this.age = age;
}

//成员方法
public void eat(){
	System.out.println(this.name + "吃饭饭");
}

//成员方法
public void sleep(){
	System.out.println(this.name + "睡觉觉");
}

}

public class Test01 {
	public static void main(String[] args) {

/*		//无参
    Person p = new Person();

	p.name = "奇男子";
	p.sex = '男';
	p.age = 22;*/
	
	//类型 引用 = new 构造方法;
	Person p = new Person("奇男子", '男', 22);//有参构造方法,new对象时给属性赋值
	
	System.out.println(p.name);
	System.out.println(p.sex);
	System.out.println(p.age);
	
	p.eat();
	p.sleep();
}

}

无参构造:new对象时,成员变量系统会赋默认值,之后会调用无参构造(可以进行初始化数据,测试类中一个一个给属性赋值),构造方法执行完,对象创建成功;

有参构造:new对象时,成员变量系统会赋默认值,之后会调用无参构造,再调用有参构造(可以进行初始化数据,将传进来的参数赋值给对象的属性),构造方法执行完,对象创建成功;

无参构造、有参构造内存图

无参构造内存图

有参构造内存图

总结:

1.练习题 -- 编写动物园类

2.初始面向对象深入理解

​ class文件只加载一次

​ 每个对象的成员变量独享一份,对象存成员变量

​ 方法要调用时才在栈内存开辟空间

3.构造方法 -- 重要

4.this -- 哪个对象调用该方法,该方法中的this就表示该对象

相关推荐
星火开发设计2 小时前
枚举类 enum class:强类型枚举的优势
linux·开发语言·c++·学习·算法·知识
程序员清洒7 小时前
Flutter for OpenHarmony:GridView — 网格布局实现
android·前端·学习·flutter·华为
喜欢吃燃面7 小时前
Linux:环境变量
linux·开发语言·学习
代码游侠7 小时前
ARM开发——阶段问题综述(二)
运维·arm开发·笔记·单片机·嵌入式硬件·学习
徐徐同学8 小时前
cpolar为IT-Tools 解锁公网访问,远程开发再也不卡壳
java·开发语言·分布式
Mr.朱鹏9 小时前
Nginx路由转发案例实战
java·运维·spring boot·nginx·spring·intellij-idea·jetty
白露与泡影10 小时前
2026版Java架构师面试题及答案整理汇总
java·开发语言
历程里程碑10 小时前
滑动窗口---- 无重复字符的最长子串
java·数据结构·c++·python·算法·leetcode·django
qq_2290580111 小时前
docker中检测进程的内存使用量
java·docker·容器
我真的是大笨蛋11 小时前
InnoDB行级锁解析
java·数据库·sql·mysql·性能优化·数据库开发