Java基础——面向对象

相信大家都多多少少的听说过面向对象与面向过程的概念吧,今天阿Q就带大家一起研究一下面向对象。首先给大家说一下概念吧。面向过程其实就是在编程过程中注重步骤性,它所关心的是事件;而面向对象其实是将你所看到的事物抽象成一个对象的过程,他注重的是事物本身,也就是对象。

面向对象的思想特点

a:是一种更符合我们思想习惯的思想
b:可以将复杂的事情简单化
c:将我们从执行者变成了指挥者,角色发生了转换

面向对象的三大特征:封装(encapsulation)、继承(inheritance)、多态(polymorphism)。(这三大特征将在后边一一进行讲解)

要学习对象,首先要理解好类,对象,属性,行为,成员变量,成员方法等几个概念。

  • 类:是一组相关的属性和行为的集合,Java中最基本的单位是类。
  • 对象:该类事物的具体体现。
  • 属性:对象具有的描述信息(名词)
  • 行为:对象能够做什么(动词)
  • 成员变量:对象的属性,和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
  • 成员方法 就是对象的行为,和以前定义方法是一样的,只不过把static去掉
对象的创建与调用
  • 类名 对象名 = new 类名();
  • 对象名.方法名();
  • 对象名.变量名;
例子:

写一个手机类 Phone ,属性:颜色 品牌 价格,行为:打电话 发短信 玩游戏

	class Phone{
		String brand;
		int price;

		public void call(){
			System.out.println("call");
		}
		public void send(){
			show();
			System.out.println("faduanxin");
		}
		private void show(){
			System.out.println("hehe");
		}
	}
	class Demo_Phone {
		public static void main(String[] args) {
			//创建对象
			Phone p = new Phone();
			//调用对象中的属性并赋值
			p.brand = "锤子";
			p.price = 998;
			System.out.println(p.brand + "..."  + p.price);
			//调用成员方法
			p.call();
			p.sendMessage();
			p.playGame();
		}
	}
一、一个对象的内存图

​ A:在创建某个类的对象的时候,先把类的字节码文件加载到方法区
​ B:创建对象的时候 一碰到new 就去堆内存开辟空间, 里面的成员变量 进行默认初始化

引用类型:null ​
int : 0 ​
double: 0.0 ​
char: \u0000 ​
boolean: false

​ C:如果main方法调用对象的一些属性进行赋值操作 ,那么就用刚被赋的值替换掉原来的初始值
​ D:如果在main方法中调用对象的方法,就直接从方法区里面把方法加载到栈内存中,进行执行,执行完了从栈内存消失
在这里插入图片描述

二、两个对象的内存图:

每new一次 就在堆内存中开辟一个新的空间
在这里插入图片描述

三、两个对象三个引用内存图

可以有多个引用同时指向同一个区域,那么这多个引用在进行操作的时候,都是操作的那个区域
在这里插入图片描述

成员变量和局部变量
  1. ​ 类中位置不同
    ​ 成员变量:在类中方法外
    ​ 局部变量:方法内
  2. ​ 内存中位置不同
    ​ 成员变量:在堆内存中
    ​ 局部变量:栈内存中
  3. ​ 生命周期不同
    ​ 成员变量:随着对象的创建(new的时候创建)而存在 随着对象的消失(当这个内存区域没有引用去指向的时候 垃圾回收器就去回收)而消失
    ​ 局部变量:随着方法的调用而存在 随着方法的调用完毕而消失
  4. ​ 初始化不同
    ​ 成员变量:有默认初始化
    ​ 局部变量:没有默认初始化 所以在使用局部变量之前必须要先赋值

​ 注意事项:
​ 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
​ 基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char
​ 引用数据类型变量包括哪些:数组,类,接口,枚举

	class Person {
		String name;				//成员变量
		int num;

		public void speak() {
			int num = 10;			//x和num都是局部变量
			System.out.println(name);	//结果是:null
				
			System.out.println(num);	//结果是:10
			System.out.println(this.num);	//结果是:0
		}
	}
匿名对象

概念:没有名字的对象
使用:

  • A:就用对象调用对象里面的方法一次的时候,为了节省代码

    注意:调用多次的时候,不适合。匿名对象调用完毕就是垃圾。可以被垃圾回收器回收。

  • B:当作参数传递的时候,如:eat(new Pig())

好了今天就先说到这了,明天继续。想了解更多学习知识,请关注微信公众号“阿Q说”,获取更多学习资料吧!你也可以后台留言说出你的疑惑,阿Q将会在后期的文章中为你解答。每天学习一点点,每天进步一点点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿Q说代码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值