初始面相对象

初始面向对象

类和对象的关系

在这里插入图片描述

类:对对象向上抽取出像的部分、公共的部分以此形成类,类就相当于一个模版。

对象:在某个模版下的具体的产物可以理解为对象,对象就是一个一个具体的实例,就相当于这个模版下具体的产品,万事万物皆对象。

总的来说类是抽象的,对象是具体的。

注意:在开发过程中,先写类,再写对象!

面相过程与面相对象

面向过程是以事件为中心,按照我们编写的代码是根据完成一个步骤的过程来进行。

面相对象是以对象为中心,先把要完成的功能封装成一个一个的对象,通过调用对象的方法或属性来完成功能。

例如:把大象放入冰箱

面相过程思想:

  1. 打开冰箱门
  2. 把大象放入冰箱
  3. 关闭冰箱门

代码实现:

public class Test01{
	public static void main(String[] args){
			openss();
			putIn();
			closes();	
	}
	public static void openss(){
		System.out.println("打开冰箱门");
	}
	public static void putIn(){
		System.out.println("把大象放进冰箱");
	}
	public static void closes(){
		System.out.println("关闭冰箱");
	} 
	
}

面向对象思想:

  1. 先找类(大象,冰箱,测试类)

  2. 找动作

    • 冰箱:可以开门和关门
    • 大象:可以进入冰箱
    • 测试类:main方法
  3. 测试类:创建大象和冰箱的具体对象,调用其功能。

代码实现:

public class Test11{
    public static void main(String[] args){
        Refrigerator refrigerator = new Refrigerator();//创建冰箱对象
        Elephant elephant = new Elephant();//创建大象对象
        //调用方法
        refrigerator.openss();
        elephant.move();
        refrigerator.closes();

    }

}

class Refrigerator{
    public static void openss(){
        System.out.println("打开冰箱门");
    }

    public static void closes(){
        System.out.println("关闭冰箱");
    }

}

class Elephant{
    public static void  move(){
        System.out.println("大象进入冰箱");
    }
}

类的编写

  • 给类起一个见名知意的名字,将首字母大写并且遵循之前所讲到的驼峰命名原则。
  • 类的特性编写,特性即类的属性部分。
  • 类的功能编写,功能即类的方法部分。

代码实现:

public class Person {
	String name;
	char sex;
	int age;
	public void eat(){
		System.out.println("吃饭");
	}
	public void sleep() {
		System.out.println("睡觉");
	}	
	public static void method() {
		System.out.println("静态方法");
	}
}

对象的创建和使用

  • 创建格式:类名 对象名 = new 类名

  • 给对象的属性赋值:对象名.属性名 = 值

  • 调用对象的方法: [返回值类型名字 = ] 对象名.方法名(参数列表);

代码实现:

public class Test01 {
	public static void main(String[] args) {
		//创建对象
		Person p = new Person();
		//设置属性
		p.name = "胡歌";
		p.sex = '男';
		p.age = 41;
		//获取属性
		System.out.println(p.name);
		System.out.println(p.sex);
		System.out.println(p.age);
		//调用成员方法
		p.eat();
		p.sleep();
		//调用静态方法
		Person.method();
	}
}

对象的创建过程

  1. 在第一次遇到一个类的时候,对这个类要进行加载,只加载一次。
  2. 创建对象,在堆中开辟空间
  3. 对对象进行初始化操作,属性赋值都是默认的初始值。
  4. new关键字调用构造器,执行构造方法,在构造器中对属性重新进行赋值

内存分析

在这里插入图片描述

创建多个对象的内存分析:

public class Test01 {
	public static void main(String[] args) {
		Person p1 = new Person();
		p1.name = "胡歌";
		p1.sex = '男';
		p1.age = 41;
		System.out.println(p1.name);
		System.out.println(p1.sex);
		System.out.println(p1.age);
		p1.eat();
		p1.sleep();
		System.out.println("-----------------------------");
		Person p2 = new Person();
		p2.name = "迪丽热巴";
		p2.sex = '女';
		p2.age = 18;
		System.out.println(p2.name);
		System.out.println(p2.sex);
		System.out.println(p2.age);
		p2.eat();
		p2.sleep();
	}
}

内存分析:

在这里插入图片描述
注意:

  1. 类的class文件只加载1次
  2. 成员变量:每个对象独享一份
  3. 成员方法里的this表示调用该方法的对象(this后面会讲)
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值