面型对象基本理解

1. 面向对象

1.1. 面向对象概述

面向对象是一种软件开发方式 , 一种编程范式 , 面向对象的概念和应用已经超越了程序设计和软件开发 , 扩展到如数据库系统 , 交互式界面 , 应用平台 , 分布式系统 , 网络管理结构 , CAD技术 , 人工智能 . 面向对象是一种对现实世界理解和抽象的方法 , 是计算机编程技术发展到一定阶段后的产物

面向对象是相对于面向过程来讲的 , 面向对象方法 , 把相关的数据和方法组织为一个整体来看待 , 从更高的层次来进行系统建模 , 更贴近事物的自然运行模式.

1.2. 面向对象和面向过程

面向过程 : 侧重分步骤 , 需要考虑完成该功能的过程 , 通过问题来制定解决办法的步骤 , 第一步做什么,第二步做什么

面向对象 : 侧重分模块 ,

面向有对象优势 : 可扩展性,可维护性,灵活性,使程序耦合度降低

缺点 : 性能比面向过程相对较差

1.3. 构造方法

/**

*

* 当创建对象时 , 会自动调用当前类的构造方法

*

* 构造方法的声明 : 权限修饰符 方法名 (参数){ }

*

* 注意 : 没有返回值类型 , 不写void

*

* 构造方法名与类名必须一致

*

* 如果类中没有写构造方法 , 则默认有一个无参构造

*

* 如果已经编写了构造方法 , 则默认的无参构造就不会存在(即使编写的构造方法是有参的)

*

*所以一般定义构造方法的时候 , 会再写一个无参构造

*

* @author 善良的王铁柱

*2023年10月6日

*/

1.4. 类和对象

/**

*

* 类 : 对一类事物的客观描述的标准

*

* 对象 : 一切事物皆为对象 , 是具体的个体 , 符合类标准的个体

*

* 根据不同的属性划分为不同的类

*

* 根据不同的属性值划分不同的对象

*

* 局部变量: 方法中使用,作用域也在该方法中,具有临时性的,不适合长期存储,方法执行完局部变量也就销毁了

*

* 静态变量: 类级别的变量,所有该类对象访问这个变量时,值是一样的

*

* 成员变量: 对象级别的,所有该类的对象都有这个属性,但是值可能一样可能不一样

*

* 如果方法中需要用到成员属性,则该方法一定是成员方法,反之则为静态方法

*

* @author 善良的王铁柱

*2023年10月6日

*/

1.5. 对象使用

public static void main(String[] args) {
		//数据类型 变量名 = 值;
		int i = 234;
		String s1 = "asd";
		Student ss1 = new Student();
		ss1.name = "王帅";
		ss1.age = 17;
		ss1.num = 100001;
		
		Student ss2 = new Student();
		ss2.name = "张三";
		ss2.age  = 22;
		ss2.num = 100002;
		ss2.add = "asdf";
		
		System.out.println(ss2.add);
		System.out.println(ss1.age);
	}

1.6. JavaBean

就是公共的类,私有化的属性,公共的获取属性的方法(getter/setter),公共的无参构造

public class User {
	//用户名
	private String username;
	//密码
	private String password;
	//昵称
	private String nickname;
	
	//构造方法
	public User() {
	}
	
	public User(String username,String password) {
		//有参构造  用于创建对象时初始化成员变量的值
		this.username = username;
		this.password = password;
	}

	public User(String username, String password, String nickname) {
		//全参构造
		this.username = username;
		this.password = password;
		this.nickname = nickname;
	}
	//getters and setters 用来获取和修改私有化成员变量的值
	public String getUsername() {
		//成员方法中可以直接访问成员属性
		//this 就是当前对象 , 谁调用这个方法 , this就是谁
		
		return username;
	}

	public void setUsername(String username) {
		if (username == "123") {
			username = "双击老铁666";
		}
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getNickname() {
		return nickname;
	}

	public void setNickname(String nickname) {
		this.nickname = nickname;
	}

1.7. 实例化

/**
 * 
 *实例化 : 就是值创建一个类的对象(实例)
 * 
 * User user = new User();
 * 
 * new 会去堆内存开辟一个内存空间,用于保存成员属性
 * 
 * 调用构造方法(栈内存压栈),对堆内存数据进行初始化赋值,如果没有传入数据,则赋予默认值
 * 
 * 构造方法执行完后,弹栈,并把堆内存地址返回给调用处,赋值给变量user
 * 
 * 1 加载客户端类(OOP_05)
 * 
 * 2 调用客户端类main方法
 * 
 * 3 加载服务端类(User)
 * 
 * 4 调用User的构造方法
 * 
 * 5 堆内存创建空间,并对成员属性进行初始化
 * 
 * 6 构造方法弹栈,并把内存地址赋值给变量
 * 
 * @author 善良的王铁柱
 *2023年10月6日
 */

1.8. 常见异常

public static void main(String[] args) {
		User u3 = new User();
		u3 = null;
		// 一种是编译时异常
		// 一种是运行时异常
		// java.lang.NullPointerException 空指针异常, 是运行时异常
		// 使用null 访问成员属性,就会出现空指针异常
		System.out.println(u3.getUsername());
	}

1.9. 对象调用静态属性

static int a = 99;
	int b = 22;
	public static void main(String[] args) {
		int a = 1;
		OOP_07 s1 = new OOP_07();
		
		// 可以通过对象调用静态属性
		// 调用静态变量,因为在编译时,会自动把o换成对应的类名去调用
		System.out.println(s1.b);
		s1 = null;
		
		System.out.println(s1.a);
		//调用局部变量
		System.out.println(a);
		//调用静态变量
		System.out.println(OOP_07.a);
	}

1.10. 注意事项

1.10.1. 静态调用成员

1.10.2. 传值与传址

public static void main(String[] args) {
		Test_01 t = new Test_01(19);
		m1(t);
		System.out.println(t.age);
	}
	public static void m1(Test_01 t){
		t.age = 11;
	}
}
class Test_01{
	int age ;

	public Test_01(int age) {
		this.age = age;
	}

1.10.3. 区分成员方法和构造方法

	public static void main(String[] args) {
		new OOP_09();
		new OOP_09(8);
		//new OOP_09("");
	}
	OOP_09(){
		
	}
	public OOP_09(int a) {
		
	}
	// 成员方法名可以和类名一样
	// 如何区分同名的成员方法和构造方法呢? 看返回值,构造方法没有返回值,连void都没有
	public void OOP_09(String str) {
		
	}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值