【Java】面向对象基础

🌟个人博客:www.hellocode.top🌟
⭐所有文章均在上方博客首发,其他平台同步更新
🔥本文专栏:Java零基础指南
🌞更多相关内容请点击前往 Java零基础指南 查看
⚡如有问题,欢迎指正,一起学习~~



面向对象和面向过程的思想对比

面向过程编程(Procedure Oriented Programming)面向对象编程(Object Oriented Programming)
是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现是一种以对象为中心的编程思想,通过指挥对象实现具体的功能

对象:指客观存在的事物 (万物皆对象)


类和对象

  • 类是对现实生活中一类具有共同属性行为的事物的抽象
  • 类是对事物,也就是对象的一种描述

可以将类理解为一张设计图,根据设计图,可以创建出具体存在的事物

  • 类的组成
    • 属性:该事物的各种特征
    • 行为:该事物存在的功能(能够做的事情)
  • 对象:是能够看得到摸得着的真实存在的实体

类是对对象的描述 , 对象是类的实体
一个类可以创建出多个对象

类的定义
  • 类的组成:属性行为
    • 属性:在代码中通过成员变量来体现(类中方法外的变量)
    • 行为:在代码中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
  • 类的定义步骤
    • 定义类
    • 编写类的成员变量
    • 编写类的成员方法
public class 类名{
	// 成员变量
	变量1的数据类型 变量1;
	String name;		// 未赋值默认null
	变量2的数据类型 变量2;
	int age;			// 未赋值默认0
	......
	// 成员方法
	方法1;
	public void study(){
		System.out.println("学习");
	}
	方法2;
	......
}
对象的创建和使用
  • 创建对象
    格式:类名 对象名 = new 类名();
  • 使用对象
    使用成员变量:对象名.变量名
    使用成员方法:对象名.方法名();
  • 案例
// 需求:定义一个类,然后定义一个手机测试类,在手机测试类中通过对象完成成员变量和成员方法的使用
public class Phone{
	// 成员变量:品牌、价格、....
	String brand;
	int price;
	// 成员方法:打电话、发短信、....
	public void call(String name){
		System.out.println("给" + name + "打电话");
	}
	public void sendMessage(){
		System.out.println("群发短信");
	}
}

对象内存图

  • 单个对象内存图
    在这里插入图片描述
  • 两个对象内存图
    在这里插入图片描述
  • 两个引用指向同一对象内存图
  • 垃圾回收

注意:当堆内存中,对象数组产生的地址,通过任何方式都不能被找到后,就会被判定为内存中的 “垃圾”
垃圾会被Java垃圾回收器,在空闲的时候自动进行清理回收

  • 成员变量和局部变量
    • 成员变量:类中方法外的变量;存放于堆内存;随着对象的存亡而存亡;有默认的初始化值
    • 局部变量:方法中的变量;存放于栈内存;随着方法调用存在,方法调用完毕结束;无默认初始化值,必须先定义、赋值再使用

封装

  • private关键字:权限修饰符,可以用来修饰成员,来提高数据的安全性
    特点:只能在本类当中进行访问,外界需要访问可以定义方法来进行设置值获取值

针对private修饰的成员变量,如果需要被其他类引用,提供相应的操作
提供get变量名();方法,用于获取成员变量的值,方法用public修饰
提供set变量名();方法,用于设置成员变量的值,方法用public修饰

// 新建Student类
public class Student{
	private String name;
	private int age;
      
	public void setName(String n){
		name = n;
	}
	public String getName(){
		return name;
	}
	public void setAge(int a){
		age = a;
	}
	public int getAge(){
		return age;
	}
	public void show(){
		System.out.println(name + age);
	}
}
  • this关键字:可以调用本类的成员(变量,方法),解决局部变量和成员变量重名问题

局部变量和成员变量如果重名,Java使用的是就近原则
this代表所在类的对象引用,方法被哪个对象调用,this就代表哪个对象

public class Student{
	private int age;
	public void method(int age){
		this.age = age;			// 添加this关键字,使前一个age成为成员变量,再将局部变量age赋值过去
	}
}
  • this内存原理(感兴趣的话可以去网上查着了解了解)
  • 封装
    • 面向对象三大特征之一(封装继承多态
    • 隐藏实现细节,仅对外暴露公共的访问方式(类似于插线板)
    • 常见体现:
      • 代码抽取到方法中,是对代码的一种封装
      • 属性抽取到中,是对数据的一种封装
    • 私有的成员变量,提供setXxx和getXxx方法
    • 好处
      • 提高了代码的安全性
      • 提高了代码的复用性

狭义上的封装指的是对属性的封装;而广义的封装,也包括将重复使用的代码抽取到方法中


构造方法

  • 构建、创造对象的时候,所调用的方法
  • 格式:
    1. 方法名与类名相同,大小写也要一致
    2. 没有返回值类型,连void也没有
    3. 没有具体的返回值(不能由return带回结果数据)
public class Student{
	public Student(){
		System.out.println("这是Student类的构造方法");
	}
}
  • 执行时机:
    1. 创建对象的时候调用,每创建一次对象,就会执行一次构造方法
    2. 不能手动调用构造方法
  • 作用:用于给对象的数据(属性)进行初始化
class Student{
	private int age;
	public Student(int age){
		this.age = age;
	}
}
  • 注意事项

如果没有定义构造方法,系统将给出一个默认无参数的构造方法
如果定义了构造方法,系统将不再提供默认的构造方法,如果这时候调用无参构造的话就会报错

  • 标准类的代码编写和使用
/*
	JavaBean类:封装数据的类
*/
public class Student{
	// 私有变量
	private String name;
	private int age;
      
	// 无参数构造方法
	public Student(){}
	//有参数构造方法
	public Student(String name, int age){
		this.name = name;
		this.age = age;
	}
      
	//set/get方法
	public void setName(String name){
		this.name = name;
	}
      
	public String getName(){
		return name;
	}
      
	public void setAge(int age){
		this.age = age;
	}
      
	public String getAge(){
		return age;
	}
}

推荐阅读:Java API基础

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

九思のJava之路

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

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

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

打赏作者

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

抵扣说明:

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

余额充值