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

相关推荐
小羊没烦恼!4 分钟前
TypedSql:在 C# 类型系统上实现一个 SQL 查询引擎
java·linux·运维·服务器·开发语言·数据库·mysql
inquisiter8 分钟前
KernelGpt的部分尝试
java·前端·apache
aibo86030811 分钟前
基于 Spring Boot + Vue3 的餐饮食材采购与成本分析系统设计与实现
java·spring boot·后端
Geek-Chow13 分钟前
Spring Boot: Integrating Swagger / OpenAPI With springdoc-openapi
java
Rain的Java大神之路15 分钟前
面了上百人,我最爱问的LeetCode 1「两数之和」:能背代码的很多,能讲清“先查后存”的没几个
java·后端·算法
薛之谦_16 分钟前
Java 整合 RocketMQ 实战:从入门到复杂场景落地
java·rocketmq·java-rocketmq
aibo86030819 分钟前
基于 Spring Boot + Vue3 的菜谱分享网站设计与实现
java·spring boot·后端
凤山老林20 分钟前
Spring Boot 集成 TOTP 双因素认证与恢复码机制
java·spring boot·后端
小冯不疯23 分钟前
物料主数据同步实战:从金蝶云星空到小满OKKICRM的单一策略深度拆解
java·大数据·数据库
Z21-X24 分钟前
云原生运维学习笔记:揭开虚拟化的硬核面纱,从底层架构到KVM实战
运维·笔记·学习·云原生