初识面相对象深入理解、构造方法--学习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就表示该对象

相关推荐
探索java4 分钟前
Java并发编程中的StampedLock详解:原理、实践与性能优化
java·stampedlock
皮蛋sol周4 分钟前
嵌入式学习C语言(八)二维数组及排序算法
c语言·学习·算法·排序算法
界面开发小八哥15 分钟前
「Java EE开发指南」如何用MyEclipse将Java项目转换为Web项目?
java·ide·java-ee·eclipse·开发工具·myeclipse
pobu16826 分钟前
aksk前端签名实现
java·前端·javascript
人生游戏牛马NPC1号37 分钟前
学习 Flutter (一)
android·学习·flutter
一个天蝎座 白勺 程序猿1 小时前
飞算JavaAI进阶:重塑Java开发范式的AI革命
java·开发语言·人工智能
前端 贾公子1 小时前
tailwindCSS === 使用插件自动类名排序
java·开发语言
没有bug.的程序员1 小时前
JAVA面试宝典 -《Spring Boot 自动配置魔法解密》
java·spring boot·面试
Aczone281 小时前
嵌入式 数据结构学习 (六) 树、哈希表与内核链表
数据结构·学习·算法