java学习基础篇笔记8------面向对象1

不得不说研究生生活还是比较忙的,停滞了几周的学习,现在我终于又开始了一点点学习进展。

面向对象

  • 1.Java类及类的成员:属性、方法、构造器;代码块、内部类
  • 2.面向对象的大特征:封装性、继承性、多态性、(抽象性)
  • 3.其它关键字:this、super、static、final、abstract、interface、package、import等

面向对象与面向过程的区别

  • 面向过程:强调的是问题的解决过程,以函数为最小单位。
  • 面向对象:强调的是谁来解决问题,以对象/类为最小单位,将功能封装到对象中,通过调用对象的功能来解决问题。

两个重要的概念

类和对象

  • 类:对一类事物的描述,是抽象的、概念上的定义
  • 对象:类的实例化,是某个具体的事物,每个对象都包含类的所有特征和属性。

面向对象的实现过程

  • 1.创建类,设计类的成员
  • 2.创建类的对象
  • 3.通过“对象.属性”或“对象.方法”调用对象的结构
  • 属性 = 成员变量 = field = 域、字段
  • 方法 = 成员方法 = 函数 = method
  • 创建类的对象 = 类的实例化 = 实例化类

对象与对象数组的内存解析

对象的内存解析
在这里插入图片描述
:图像来自尚硅谷)
对象由类进行实例化,实例化的对象在栈中对应一个地址,该地址指向堆空间的一个区域,该区域包含了对象的一切属性和方法的存储位置。

对象数组的内存解析
在这里插入图片描述
:图像来自尚硅谷)
对象数组同样由类实例化所得,对象数组变量名在栈中存储,其地址指向堆空间的数组,每一个数组元素存放的地址均对应一个对象的堆内存区域。

匿名对象

创建的对象未给其赋名,只能调用一次

new Phone().sendEmail();
new Phone().playGame();

属性(成员变量)vs局部变量

相同点:
定义变量的格式:数据类型 变量名 = 变量值
不同点:

  1. 在类中声明位置不同:
    属性直接定义在类的一对{}中,局部变量声明在方法内,方法形参,代码块内,构造器形参,构造器内部的变量。
  2. 权限修饰符不同
    声明属性时,指明其权限,使用权限修饰符。
    常用的权限修饰符:private、public、缺省、protected —>封装性
    局部变量:不可以使用权限修饰符。
  3. 默认初始化值不同
    属性:类的属性,根据其类型,都默认初始化值。
  •  	整型(byte、short、int、long:0)
    
  •  	浮点型(float、double:0.0)
    
  •  	字符型(char:0  (或'\u0000'))
    
  •  	布尔型(boolean:false)
    
  •  	引用数据类型(类、数组、接口:null)
    
    局部变量:没默认初始化值。意味着,我们在调用局部变量之前,一定要显 式赋值。
  1. 内存中加载的位置不同
    属性加载到堆空间(非static),局部变量加载到栈空间

类的创建和声明,方法的创建和声明,对象的创建

例1:

package object_oriented;
/*
 * 要求:
 * (1)创建Person类的对象,设置该对象的name、age和sex属性,调用study方法,
 * 输出字符串“studying”,调用showAge()方法显示age值,
 * 调用addAge()方法给对象的age属性值增加2岁。
 * (2)创建第二个对象,执行上述操作,体会同一个类的不同对象之间的关系。
 */
public class Persontest {
	public static void main(String args[]) {
		//创建类的对像ob
		Person ob = new Person();
		//给对像的属性进行赋值
		ob.name = "shenyinhong";
		ob.age = 22;
		ob.sex = 1;
		//调用对像的方法实现特定功能
		ob.study();
		ob.showAge();
		int newage = ob.addAge(2);
		System.out.println("更新后的岁数:"+newage);
		
	}

}
//创建person类
class Person{
	//创建person类的属性
	String name;
	int age;
	int sex;
	//创建person类的方法
	public void study() {
		System.out.println("name:"+name);
	}
	public void showAge() {
		System.out.println("age:"+age);
	}
	public int addAge(int i) {
		age+=i;
		return age;
	}
}

例2:

package object_oriented;
/*
 * 3.1 编写程序,声明一个method方法,在方法中打印一个10*8 的*型矩形,在main方法中调用该方法。
 * 3.2 修改上一个程序,在method方法中,除打印一个10*8的*型矩形外,再计算该矩形的面积,
 * 并将其作为方法返回值。在main方法中调用该方法,接收返回的面积值并打印。
 * 
 * 3.3 修改上一个程序,在method方法提供m和n两个参数,方法中打印一个m*n的*型矩形,
 * 并计算该矩形的面积, 将其作为方法返回值。在main方法中调用该方法,接收返回的面积值并打印。

 */
public class Matrixtest {
	int m;
	int n;
	public static void main(String args[]) {
		Matrixtest ob = new Matrixtest();
		ob.m = 25;
		ob.n = 12;
		int area = ob.method(ob.m, ob.n);
		System.out.println("矩阵面积为:"+area);
		
	}
public int method(int x,int y) {
	for(int i = 1;i <= x;i++) {
		for(int j = 1;j <= y;j++) {
			System.out.print("*");
		}
		System.out.println();
	}
	return x*y;
}
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值