面向对象编程思想、类与对象


1 面向对象编程思想

1.1 概念

  • Java语言是一种面向对象的程序设计语言。
  • 面向对象思想是一种程序设计思想,是在计算机程序设计过程中,参照现实中的事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。
  • 对象是指将客观世界中具体存在的事物,每种事物都具备自己的属性和行为。

1.2 面向过程与面向对象

1.2.1 面向过程编程

完成一个功能时,功能的每一个步骤,都需要我们进行参与,每一个细节都需要了解清楚,才能完成。强调的是过程。

1.2.2 面向对象编程

强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。在代码书写时更注重代码的扩展性与可重用性。

1.2.3 实例

		//把大象装进冰箱
		
		//面向过程
		//1、把冰箱门打开
		System.out.println("把冰箱门打开");
		//2、把大象装进去
		System.out.println("把大象装进去");
		//3、把冰箱门关上
		System.out.println("把冰箱门关上");

		//面向对象
		//1、创建对应处理对象
		IceBox box=new IceBox();
		//2、调用对象对应方法完成功能
		box.opean();
		box.save("大象");
		box.close();

1.3 面向对象的优点

  • 更符合我们的思想
  • 将复杂的事情简单化
  • 将我们从执行者变成了指挥者

1.4 面向对象的三大特征

  • 封装
  • 继承
  • 多态

2 类与对象

2.1 什么是类

2.1.1 概念

是一组相关属性行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。

  • 属性:就是该事物的状态信息。
  • 行为:就是该事物能够做什么。

2.1.2 类的好处

Java面向对象编程,但是不是所有的对象都提供,有时需要我们自己进行对象的定义,但是对象太过指定,太多我们无法将全部对象书写,并且在使用时我们也不会使用全部对象,我们使用类进行代表这些对象。

2.2 什么是对象

对象:是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。

2.3 类与对象的关系

  • ①类是对一类事物的描述,是抽象的
  • ②对象是一类事物的实例,是具体的
  • ③类是对象的模板,对象是类的实体

在这里插入图片描述

3 类的定义与对象的使用

3.1 类的定义

3.1.1 类的组成

类的组成是由属性行为两部分组成

  • 属性: 在类中通过成员变量来体现(类中方法外的变量)
  • 行为: 在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)

3.1.2 类的定义格式

		//类名:ClassName  符合标识符命名规范 要求首字母大写
		//类体:{}中代码 类的具体内容
		//类由类名和类体组成,类体包括成员变量(属性)和成员方法(行为)
		public class ClassName {
			//成员变量 
			//成员方法 
		}

3.1.3 类的书写

类的书写通常只的是对类体的书写

		//定义学生类(案例)
		//类体
		//属性=>变量   也叫成员(实例)变量
		//语法:修饰符 数据类型 属性名[=值]
		//[]中的内容可以省略
		public String name;//姓名
		public int age;//年龄
		public int studyId;//学号
		public String sex;//性别
	
		//行为=>方法    也叫成员(实例)方法
		//语法:修饰符 返回值类型 方法名 (参数列表){方法体}
		public void sutdy(){
			System.out.println("上课");
		}
	
		public void sleep(){
			System.out.println("睡觉");
		}
	
		public void say(){
			System.out.println("我叫"+name+",今年"+age+"岁");
		}

3.2 对象的使用

3.2.1 创建对象的格式

  • 创建对象
		类名 对象名 = new 类名();

3.2.2 访问类中的成员

		//类中包括成员变量和成员方法
		public class ClassName {
			//成员变量 
			//成员方法 
		}
		
		//属性赋值
		对象名.成员变量 = 属性值;
		//获取成员变量属性
		对象名.成员变量;
		//获取成员方法
		对象名.成员方法(参数);

3.2.3 代码演示(案例)

	public class Test01_Student {
    	public static void main(String[] args) {
       		//创建对象格式:类名 对象名 = new 类名();
        	Student s = new Student();
        	System.out.println("s:"+s); //
        	//直接输出成员变量值
        	System.out.println("姓名:"+s.name); //null
        	System.out.println("年龄:"+s.age); //0
        	System.out.println("‐‐‐‐‐‐‐‐‐‐");

        	//给成员变量赋值
        	s.name = "赵丽颖";
        	s.age = 18;

        	//再次输出成员变量的值
        	System.out.println("姓名:"+s.name); //赵丽颖
        	System.out.println("年龄:"+s.age); //18
        	System.out.println("‐‐‐‐‐‐‐‐‐‐");

        	//调用成员方法
        	s.study(); // "好好学习,天天向上"
        	s.eat(); // "学习饿了要吃饭"
    	} 
	}

3.3 成员变量的默认值

如果在声明属性时没有赋值,在创建时会使用对应属性的默认值进行赋值。

在这里插入图片描述

3.4 类与对象的练习(案例)

  • 定义手机类
		public class Phone {
   			// 成员变量
    		String brand; //品牌
    		int price; //价格
    		String color; //颜色

    		// 成员方法
    		//打电话
    		public void call(String name) {
        		System.out.println("给"+name+"打电话");  }

    		//发短信
    		public void sendMessage() {
        		System.out.println("群发短信");
    		}
		}
  • 测试类
		public class Test02Phone {
    		public static void main(String[] args) {
        		//创建对象
        		Phone p = new Phone();

        		//输出成员变量值
        		System.out.println("品牌:"+p.brand);//null    
        		System.out.println("价格:"+p.price);//0
        		System.out.println("颜色:"+p.color);//null
        		System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐");

        		//给成员变量赋值
        		p.brand = "锤子";
        		p.price = 2999;
        		p.color = "棕色";

        		//再次输出成员变量值
        		System.out.println("品牌:"+p.brand);//锤子    
        		System.out.println("价格:"+p.price);//2999     
        		System.out.println("颜色:"+p.color); //棕色   
        		System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐");

        		//调用成员方法
        		p.call("紫霞");
        		p.sendMessage();
    		}
		}

4 对象内存图

在这里插入图片描述

4.1 一个对象的内存图

多了一个方法区,用于存储class文件的。

4.2 两个对象的内存图

多个对象用的都是同一个方法区的内容,方法区中的class只有唯一的一份,同名的类。

4.3 多个对象指向相同内存图

一个对象的改变会影响另外一个对象的改变。

4.4 成员变量和局部变量的区别

在类中的位置不同

  • 成员变量:类中,方法外
  • 局部变量:方法中或者方法声明上(形式参数)

作用范围不一样

  • 成员变量:类中
  • 局部变量:方法中

初始化值的不同

  • 成员变量:有默认值
  • 局部变量:没有默认值。必须先定义,赋值,最后使用

在内存中的位置不同

  • 成员变量:堆内存
  • 局部变量:栈内存
    生命周期不同
  • 成员变量:随着对象的创建而存在,随着对象的消失而消失
  • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

每日一点点进步
不进则退

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

璃尔 °

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值