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

相关推荐
caimouse6 分钟前
C#里创建一个TCP客户端连接类
java·网络·tcp/ip
Sunniering9 分钟前
Springboot整合阿里云腾讯云发送短信验证码 可随时切换短信运营商
java·阿里云·云计算·腾讯云·springboot·短信
caihuayuan510 分钟前
IOS 国际化词条 Python3 脚本
java·大数据·spring boot·后端·课程设计
wjm04100636 分钟前
C++日更八股--first
java·开发语言·c++
wei3872452321 小时前
java练习2
java·开发语言·python
我的golang之路果然有问题1 小时前
案例速成GO+Socket,个人笔记
开发语言·笔记·后端·websocket·学习·http·golang
song_ly0011 小时前
《软件测试52讲》学习笔记:如何设计一个“好的“测试用例?
笔记·学习·测试用例
xiaohanbao091 小时前
day10 python机器学习全流程实践
人工智能·python·学习·机器学习·信息可视化·pandas
heyCHEEMS2 小时前
[USACO09OCT] Bessie‘s Weight Problem G Java
java·开发语言·算法
兔子蟹子2 小时前
JAVA中Spring全局异常处理@ControllerAdvice解析
java·spring