1.理解面向过程和面向对象
面向过程强调怎么做(以函数为最小单位),面向对象强调让谁去做,所以自然而然的就有了类的概念,定义一个类,这个类有什么功能什么属性,并从这个类中抽离出一个对象来调用相关功能
2.两个要素:类和对象
类比:物质和物质具体形态的关系
类的设计是面向对象设计的重点,其中又以类的成员为重
3.类的结构
常见成员有:
1.属性:又称成员变量(field),就是一个一个变量
2.方法:又称成员方法,类似于函数
类之于项目,就如细胞之于动物
4.类和对象的创建(分三步)
1.创建对象其实跟之前的定义差不多,都是 数据结构 对象名 =new 值(也可以为构造器)
例如scanner就是编译器提供的类 一般的用法为 Scanner scannner = new Scanner(system.in);
2.创建类的对象其实就是类的实例化
3.调用类的功能,都是通过对象名来调用的,不用new
5.体会类多个对象的关系
类派生的每个对象都有一套独立的属性,(类的属性都有默认初始化值,比如boolean是false,String是null)
eg:Person p3 = p1;将p1变量保存的对象地址值赋给p3,所以对p3相关属性操作,输出p1的相关属性时,也会变成P3的
6.对象的内存解析
堆(Heap)存放对象实例和数组;是宽的那个;
栈(Stack)是瘦高的那个,先进后出,用于存放局部变量(main方法里定义的是局部变量)
7.属性与局部变量的对比
类中属性的使用
属性(成员变量)vs局部变量
1.相同点
1.1定义变量的格式:数据类型 变量名 = 变量值
1.2先声明,后使用
1.3变量都有其对应的作用域
2.不同点:
2.1在类中声明的位置不同
属性:直接定义在类的一对{}内
局部变量:声明在方法内,方法形参,代码块内,构造器形参,构造器内部的变量
2.2关于权限修饰符的不同
属性:可以在声明属性时,指明其权限,使用权限修饰符。
常用的权限修饰符:private public 缺省 protected
局部变量:不可以使用权限修饰符。
2.3默认初始化值的情况:
属性:类的属性,根据其类型,都有默认初始化值。
整形(byte,short,int,long):0
浮点型(float,double):0.0
字符型(char):0(或'\u0000')
布尔型(boolean):false
引用数据类型(类(比如字符串),数组,接口):null
局部变量:没有默认初始化值。意味着我们在调用局部变量之前,一定要显示赋值。
特别地:形参在使用的时候,在赋值即可。
2.4 在内存中加载的位置:
属性:加载到堆空间中(非static)
局部变量:加载到栈空间
8.方法的举例与声明的格式
1)方法就是描述类应该具有的功能
string类型的值可以是如下格式:
string info = "我的国籍是"+nation;
info还可以return
2)方法的声明:可以从有无返回值类型和有无形参去分
比如
双非:void 方法名()
双一流:返回值类型 方法名 (形参列表)
普适性:权限修饰符 返回值类型 方法名(形参列表){
方法体}
3)方法有无返回值类型:(看题目要求,自己的经验)
如果有,要指明返回值类型,再用return关键字返回指定的类型;
没有返回值类型,则不必加return,“return;”表示结束此方法的意思
方法名属于标识符,要见名知意;
方法可以声明0,1,或者多个形参
格式:数据类型1 形参1,数据类型2 形参2,...........
4)方法的使用中,可以调用当前类中的属性和方法,但不能再定义个方法
return关键字的使用
1.适用范围:在方法体中
2.作用:1.结束方法2.针对有返回值类型的方法,返回所要数据
3.ps:return关键字后面不可以声明执行语句