[JAVA]面向对象概念

面向对象与面向过程分析

对象相当于一种数据结构,但不仅包含属性(Field),还包含了方法(Method)。
面向过程:数据和方法相互分离
面向对象:数据和方法集成在一起
在简单问题上可以面向过程;在复杂问题上宏观上用面向对象细化问题,在微观上仍用面向过程解决问题

面向对象的三大特征

封装
继承
多态

对象与类的关系

对象(instance)是具体的事物
(class)是对对象的抽象
类具有对象的特征(属性)与行为(方法),系统可以根据类创建(实例化)对象

类的定义

一个类的定义包括属性(field)、方法(method)和构造器(constructor)
若在类中未定义构造器,则在编译代码时jvm会自动生成一个默认无参空构造器

class 类名{
	属性
	方法
}

注意:类名首字母大写,其余小写,单词间驼峰原则。 例如:

class StudentOfNcu{
	private String name;
	private String number;
	public String getName(){
		return this.name;
	}
}

使用new关键字来创建对象 使用对象.变量来引用变量 使用对象.方法来调用方法

	StudentOfNcu student1 = new StudentOfNcu();
	student1.name = "张三";
	student.getName();

同一类的不同对象有不同的成员变量存储空间
同一类的不同对象共享该类的方法

类的构造器无返回值,且方法名与类名一致

class Student{
	private String name;
	private String number;
	public String getName(){
		return this.name;
	}
	public Student(){}  //默认无参空构造器
	public Student(String namen, String number){  //有参构造器
		this.name = name;
		this.number = number;
	}
}
//  可以通过构造器初始化对象
	Student student = new Student("张三", "123456")

注:当写了一个构造器后,就不再有默认的无参空构造器了,若需要则要再写

类的内存分析

  • 每个线程私有,不能实现线程间共享
  • .局部变量放置于栈中
  • .栈由系统自动分配,速度快,是一个连续的存储空间
  • 基础数据类型直接存放于栈中
  • 引用数据类型存放该变量在堆中的地址

  • 放置对象(new)
  • 堆是一个非连续的存储空间,分配灵活,但速度慢

方法区

  • 被所有线程共享
  • 用来存放程序中永远不变或唯一的内容(常量池)(类代码信息,静态变量和字符串常量

例如:

class Hello{
	public static void main(String args[]){
		Student student = new Student();
	}
}

程序运行时首先在栈中开辟一块main函数的栈帧,创建对象(student)时是通过编译时加载至方法区的Student.class字节码文件生成对象,并在堆中开辟一块内存用于存储该对象的属性信息。此时在main的栈帧中存储的对象值为其在堆中对应的地址,程序通过该地址找到堆中的信息进行访问与操作。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值