JAVA对象属性方法的使用

面向对象编程(OOP)

Object Oriented Programming

C 面向过程编程
ps : 抓药的例子,要的是抓药的过程

C++ 半面向对象,半面向过程

JAVA 面向对象编程
ps : 抓药的例子,只是看抓药的结果

类名

具有相同特点(属性)和行为(动作)的集合的总称.

比如人类 动物类 房间类 手机类等

对象

是某一类的具体体现,实例,所存在的

将类的抽象概念具体化.

人类的对象: 张三,李四等

植物类的对象 : 路边的梧桐,杨树

属性

是一类事物的特点/特征.

人类 : 有五官,有四肢,肤色等

植物类的属性 : 树干,树叶,树根,花,果实

手机的属性 : 价格,重量,颜色,形状

方法

一类事物都可以进行的动作/行为.

人类 : 吃饭,睡觉,学习等


对象、属性、方法的堆、栈

在这里插入图片描述```
1)方法执行进栈

2)new动作会在堆内存开启空间,创建对象,分配地址值

3)调用方法方法会进栈,执行后方法会弹栈



```java
package com.zhiyou100.oop;
	/*
	 * 学生类:
	 * 属性 : 姓名 年龄 学号 学校
	 * 方法 : 学习 吃饭 睡觉
	 */
public class Student {
	/*
	 * 属性的写法:
	 * [访问修饰符] 数据类型 变量名;
	 * []内的代码,public可写可不写; 
	 */
	public String name;
	public Integer age;
	public String stuNo;
	public String schoolName;
	/*
	 * [访问修饰符] 返回值类型 方法名([参数1],[参数2],...){
	 * 		方法内的执行语句;
	 * 		...
	 * }
	 * 访问修饰符 : 控制访问权限
	 * 返回值类型 : 该方法执行后返回的结果的数据类型
	 * 			基本数据类型 / 引用数据类型 / 
	 * 	    void : 返回为空,方法执行后不返回任何数据
	 *  
	 * ---
	 * 如果方法需要返回数据,
	 * 		1) 那就需要返回类型处写上返回的数据类型
	 * 		2) 在方法体的最后使用 return 值的 ; 的格式将值明确的显示返回
	 * 		3) return 后不执行任何的代码;
	 *      4) return 只能有一个值
	 * 方法名 : 见名知意,驼峰原则
	 * () 参数列表 :
	 * 		1) 形式参数 : 该方法执行可能用到的数据
	 *		2) 形式参数的写法 : 数据类型 变量名;
	 *		3) 列表内可以写多个参数,也可以不写
	 *		4) 当方法参数列表有参数时,在调用时(让方法执行时)
	 *         就必须给方法的参数赋值
	 */
	public static void main(String[] args) {
		
	}
	
	/*
	 * 游戏
	 */
	public String youXi(){
		return "赢了";
	}
	/*
	 * 学习 
	 */
	public String study(String book,String pen){
		System.out.println("学习" + book + "用的" + pen);
		return "赢了";
	}
	/*
	 * 吃 
	 */
	public void eat(){
		System.out.println("吃");
	}
	/*
	 * 睡觉 
	 */
	public void sleep(String peopleName){
		System.out.println(peopleName + "在睡觉");
	}
	
}

package com.zhiyou100.oop;
/*
 * @autor lxf
 * 测试类 
 */
public class TestOOP {
    
    

	public static void main(String[] args) {
    
    
		/* 
		 * 通过类 创建 对象 <==> 实例化
		 * 类型 对象名 = new 类名();
		 * ---------------
		 * 数据类型 变量名 = 值;
		 * ---------------
		 * 对象属性取值:
		 * 数据类型 变量名 = 对象名.属性名;
		 * 
		 * 对象属性赋值:
		 *  对象名.属性名 = 值;
		 *  
		 * 调用对象的方法
		 * 1) 方法有参数,调用时候必须传入实参
		 * 		实参与形参的个数,顺序,数据类型要保持一致
		 * 2) 方法无参数,不能给定参数
		 * 3) 方法无返回值,一定不能接收返回值
		 * 4) 方法有返回值,可以接收,也可以不接收
		 * 	A : 无返回值
		 * 		A1 无返回值无参数
		 * 			对象名.方法名();
		 * 		A2 无返回值有参数
		 * 			对象名.方法名(实参);
		 * 	B : 有返回值
		 * 		B1 有返回值无参数
		 * 			[数据类型 变量名 = (括号里的可写可不写)] 对象名.方法名();
		 * 		B2 有返回值有参数
		 * 		    [数据类型 变量名 = (括号里的可写可不写)] 对象名.方法名(实参);
		 */
		// 创建对象
		Student student = new Student();
		// 获得属性值
		Integer age = student.age;
		String name = student.name;
		String schoolName = student.schoolName;
		String stuNo = student.stuNo;
		System.out.println("name : " + name);
		System.out.println("age : " + age);
		System.out.println("schoolName : " + schoolName);
		System.out.println("stuNo : " + stuNo);
		// 属性赋值
		student.name = "张三";
		student.age = 123;
		student.schoolName = "清华大学";
		student.stuNo = "20171892";
		System.out.println("name : " + student.name);
		System.out.println("age : " + student.age);
		System.out.println("schoolName : " + student.schoolName);
		System.out.println("stuNo : " + student.stuNo);
		// A1 无返回值无参数
		student.eat();
		// A2 无返回值有参数
		student.sleep("张安");
		// B1 有返回值无参数
		String result = student.youXi();
		System.out.println("玩游戏结果 : " + result);
		// B2 有返回值有参数
		String result1 = student.study("<java从入门到成才>", "钢笔");
		System.out.println(result1);
	}

}

一个类创建多个对象,以及内存图展示

代码

package com.zhiyou100.oop;

public class TestOOP2 {

	public static void main(String[] args) {
		/*
		 * 一个类可以创建多个对象,每个对象都有自己的属性和方法
		 */
		Student s1 = new Student();
		Student s2 = new Student();
		Student s3 = new Student();
		Student s4 = new Student();
		s1.name = "zhangsan";
		//结果为空
		System.out.println(s2.name);
	}

}

图解

在这里插入图片描述

两个引用指向一个对象

代码

package com.zhiyou100.oop;

public class TestOOP3 {
	public static void main(String[] args) {
		/*
		 * 两个引用指向一个对象
		 * s1 是对象名,也是变量,也可以叫做引用
		 * s1引用的是内存中堆中的对象的地址值
		 * Student s2 = s1;
		 * 将引用赋值给s2.
		 * s1 和 s2 操作的是内存中的同一个对象
		 */
		Student s1 = new Student();
		Student s2 = s1;
		s1.name = "刘备";
		System.out.println(s2.name);

	
	}
}

图解

在这里插入图片描述

方法是对象如何调用

package com.zhiyou100.oop;

public class TestOOP4 {
    
    

	public static void main(String[] args) {
    
    
		Student student = new Student();
		Student s1 = test1(student);
		System.out.println(s1);
	}
	
	public static Student test1(Student s){
    
    
		return s;
	}

}

猜你喜欢

转载自blog.csdn.net/weixin_43731532/article/details/107189877