day_10

目录

一、 面向对象

1. 面向对象

1.1 概述

1.2  面向对象和面向过程

1.3 构造方法

1.4 类和对象

1.5 对象使用

1.6 Bean

1.7 实例化

1.8 常见异常

1.9  对象调用静态属性

1.10  注释事项

1.10.1 静态调用成员

1.10.2 传值和传引用

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


一、 面向对象

1. 面向对象

1.1 概述

1.2  面向对象和面向过程

面向过程 : 侧重分步骤,需要考虑完成该功能的过程,第一步做什么,第二步做什么....

面向对象 : 侧重分模块(一部分负责这个,一部分负责那个)

总结 :

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

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

1.3 构造方法

构造方法 是每个类都有的,并且用于创建该类的对象
如果 该类中 没有编写构造方法,那么 编译器会自动帮我们生成一个无参构造
如果 该类中 编写了构造方法,不管写的是不是有参,则 默认的无参构造都不再自动生成
所以 当我们在写有参构造的时候,可以手动编写一个无参构造
构造方法语法:修饰符 方法名/类名(参数列表){方法体}

构造方法的修饰符 我们只使用筏限控制即可,不能使用static构造方法 

没有返回值,连void都没有
构造方法的方法名 必须和类名一致

1.4 类和对象


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

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

对象 : 一切皆对象,是具体的个体,符合类标准的个体
根据不同的属性值划分不同的对象

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

静态变量: 类级别的变量,所有该类对象访问这个变量时,值是一样的(同一类中,固有属性固有值)

成员变量: 对象级别的,所有该类的对象都有这个属性,但是值可能一样可能不一样(同一类中,相同属性对应一种或多种值)

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

运用成员变量就是成员方法,运用静态变量就是静态方法(在静态方法中调用成员方法要定义新对象, 成员方法中的值不能赋给定义的新变量)

1.5 对象使用

package _01_OOP;

public class OOP_03 {
	public static void main(String[] args) {
		// 数据类型  变量名 =  值;

//对象的使用
//首先创建一个新的对象  可以给对象各个属性赋值  再输出
		
		Student s1 = new Student();
		s1.addrs = "河北邢台";
		s1.age = -19;
		s1.name = "张三";
		System.out.println(s1.age);
		s1.no = 10001;

		Student s2 = new Student();
		s2.addrs = "邯郸";
		s2.age = 19;
		s2.name = "李四";
		System.out.println(s2.no);
		System.out.println(s1.name);
		System.out.println(s2.name);
	}
}

1.6 Bean

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

package _01_OOP;

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 void setUsername(String username) {
		// 成员方法中可以直接访问成员属性
		// this 就是 当前对象,谁调用这个方法,this就是谁
		if (username == "123") {
			username = "缺心眼子";
		}
		this.username = username;
	}
//获取用户名
	public String getUsername() {
		return 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 构造方法弹栈,并把内存地址赋值给变量

1.8 常见异常

    User user = new User("admin", "root");

        user = null;

        // 一种是编译时异常

        // 一种是运行时异常

        // java.lang.NullPointerException 空指针异常, 是运行时异常

        // 使用null 访问成员属性,就会出现空指针异常

        System.out.println(user.getUsername());

1.9  对象调用静态属性

package _01_OOP;

public class OOP_07 {
	static int a = 22;
	int b = 33;

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

1.10  注释事项

1.10.1 静态调用成员

静态调用成员时会报错,  除非将成员改为静态

1.10.2 传值和传引用

同数组一样,  传值时储存的是地址,所以不能更改, 但传引用的时候可以修改堆内存中的数值导致数据更改

1.10.3 区分成员方法和构造方法
package _01_OOP;

public class OOP_09 {
	public static void main(String[] args) {
		new OOP_09();
		new OOP_09(22);
		// new OOP_09("");
	}

	// 构造方法,修饰符可以不写
	OOP_09() {

	}

	public OOP_09(int a) {

	}

	// 成员方法名可以和类名一样
	// 如何区分同名的成员方法和构造方法呢? 看返回值,构造方法没有返回值,连void都没有
	public void OOP_09(String a) {

	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值