【Java基础11】面向对象、面向过程、类、对象、封装

一、面向对象和面向过程

面向对象:以对象为单位,通过调度组合不同的对象来完成某一个功能。

面向过程:以步骤为单位,一步一步完成某一个具体的功能。

二、类

1、类的定义

class 类名{

//在类中定义属性、方法

}

class student{
    String stuId="1234556789";
    int stuAge=20;//属性
    public void studing(){//方法
    	System.out.println("活到老,学到老!");
    }
}

2、类的引用

public static void main(String[] args) {
    Student stu=null;//声明一个类的变量
    stu=new Student();//创建类的对象
    stu.stuAge=20;//调用类的属性
    stu.studing();//调用类的方法
}

三、对象

1、匿名对象

//只能使用一次,使用后该对象就会被释放
new Student().studing();

2、释放对象

stu=null;
stu.studing();//报错,空指针

3、对象内存分析

1、栈内存存储对象的地址,堆内存存储对象的属性。

在这里插入图片描述

2、若对对象进行赋值stu2=stu1(相同类型才可以赋值),则堆内存只开辟一个空间,栈内存的stu2、stu1地址相同,且同时指向堆内存的同一个空间。

当堆中的对象未被引用变量指向时,会被JVM中的GC程序认为是垃圾对象,从而内存会被回收。

在这里插入图片描述

3、将对象赋值之后,stu2和stu1指向同一个地址,则任意一个对象更改属性,另一个对象也更改。

四、封装

1、封装的概念

隐藏实现细节,仅对外提供访问接口。

2、封装的类型

属性的封装、方法的封装、类的封装、组件的封装、模块化封装、系统级封装等。

3、封装的好处

模块化、信息隐藏、代码重用、插件化易于调试、具有安全性

4、封装的缺点

会影响执行效率。

5、访问权限修饰符

public-公有,可以被所有的类访问

private-私有,只能在本类中访问,若想在外部访问,需要提供公有的方法进行访问。

通常设值属性都用private进行封装,以保护属性的安全。

public class Test04 {

	public static void main(String[] args) {
		Person p1=new Person();
		p1.setName("小明");
		p1.getName();
	}
}


class Person{
    private String name;
    //对外提供一个为name设值的方法
    public void setName(String name){
    	this.name=name;//this表示就近,访问形参的name
	}
    //对外提供一个获取name值的方法
    public String getName(){
    	return name;
	}
}

6、成员变量和局部变量

在类中的位置不同:

成员变量:在类中定义

局部变量:在方法中定义

在内存中的位置不同:

成员变量:在堆内存(属于对象,对象在堆内存)

局部变量:在栈内存(属于方法,方法运行时进栈,运行结束出栈)

生命周期不同:

成员变量:随着对象的创建而创建,随着对象的销毁而销毁

局部变量:随着方法的调用存在

初始化值不同

成员变量:有默认的初始化值,引用类型默认null

局部变量:没有默认的初始化值,必须定义赋值,然后才能使用

成员变量和局部变量名称可以相同,但是要注意用this关键字区分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值