JAVA学习历程
面向对象一
面向对象
1 面向对象的三条主线
---->Java 类以及类的成员
属性 方法 构造器 代码块 内部类
---->面向对象的三个特征
封装 继承 多态 (抽象)
---->其他关键字
2 类和对象 使用(面向对象的落地)
---->创建类
---->实例化对象
---->对象.属性 对象.方法
3 对象的内存解析
面向对象
1 面向对象的三条主线
---->Java 类以及类的成员
属性 方法 构造器 代码块 内部类
---->面向对象的三个特征
封装 继承 多态 (抽象)
---->其他关键字
2 类和对象 使用(面向对象的落地)
---->创建类
---->实例化对象
---->对象.属性 对象.方法
3 对象的内存解析
实例化后 属性在堆空间中, 而局部变量在栈空间
4 属性 和 局部变量
---->相同点
(1)定义格式相同
(2)变量都有一定的作用域
---->不同点
(1)声明的位置不同 : 属性 直接定义在类内,,局部变量 定义在方法内、 方法形参,代码块、构造器形参、构造器内部变量
(2)关于权限修饰符: 属性可以添加权限修饰符(public private pretected 缺省)/// 局部变量不加
(3)关于默认初始化值: 属性 有默认初始化(根据类型) /// 局部变量 没有初始化值 也就意味着 局部变量声明时一定要加值 (形参除外)
(4)关于内存加载位置: 属性在对空间 / 局部变量在栈空间
5 方法
---->权限修饰符 返回值类型 方法名(形参){
方法体
return
}
----> 方法中 也可以调方法
方法中不能定义方法
6 JVM内存结构
编译完源程序后 生成一个或多个字节码文件.class
我们使用JVM中的类的加载器和解释器对生成的字节码文件进行解释运行。。这意味着,需要将字节码文件对应的类加载到内存中 涉及到内存解析
《JVM规范》
虚拟机栈:
堆:
方法区:
7 对象数组的内存解析
引用类型的变量 只能存储两种 null 或者 地址值
对null进行掉方法的操作 会产生异常
8 匿名对象 不声明对象变量
new Phone().sendEmail();
new Phone().playGame(); //这两个不是一个对象
9 方法重载
方法 和 构造器方法
同一个类 同一个方法名 不同的形参列表
注意 返回值、权限修饰符、形参变量名不重要
10 可变个数的形参
---->格式 : 数据类型 … 变量名
----> 允许直接定义能和多个实参想匹配的形参
---->可以传入 0个 1个 或多个 参数
---->注意
Public void show(String … strs){}和public void show(String[] strs){}不能构成重载(尚硅谷 207)
----> 可变个数形参 需要写在形参列表的末尾
----> 一个形参列表最多只能定义一个 可变个数形参
11 方法参数的值传递机制
---->java方法的参数传递只有一种方式 :值传递
---->赋值操作:
基本数据类型:赋值的是数据
引用数据类型:赋值的是地址值
---->方法形参:值传递
12 几个注意点
第二个里边重载了println
13 递归方法
还没看!!!!
14 super关键字用法
(1)在子类的成员方法中,调用父类的成员变量
(2)在子类的成员方法中,访问父类的成员方法
(3)在子类的构造方法中,访问父类的构造方法
15 四种权限修饰符的理解
封装性的体现需要权限修饰符:可以类的内部结构 // 只有 缺省 和 public可以修饰类
public:
private:
缺省:
protected:
16 属性赋值的过程
---->书信复制到先后顺序
(1)默认初始化
(2)显示初始化
(3)构造器初始化
(4)对象.方法 对象.属性
(1)-(2)-(3)-(4)
17 JavaBean
所谓JavaBean, 是符合如下标准的Java类:
(1)类是公共的
(2)有一个无参的公共构造器
(3)有属性,且有get set方法
18 UML类图
19 this 关键字的使用
this可以修饰 属性 方法 构造器
20 MVC设计模式
model / view / controller
视图模型层 / 控制器层 / 数据模型层
21 import
如果 使用的是 java.lang包下的类 可以不用import
22 项目二的理解
实例化后 属性在堆空间中, 而局部变量在栈空间
4 属性 和 局部变量
---->相同点
(1)定义格式相同
(2)变量都有一定的作用域
---->不同点
(1)声明的位置不同 : 属性 直接定义在类内,,局部变量 定义在方法内、 方法形参,代码块、构造器形参、构造器内部变量
(2)关于权限修饰符: 属性可以添加权限修饰符(public private pretected 缺省)/// 局部变量不加
(3)关于默认初始化值: 属性 有默认初始化(根据类型) /// 局部变量 没有初始化值 也就意味着 局部变量声明时一定要加值 (形参除外)
(4)关于内存加载位置: 属性在对空间 / 局部变量在栈空间
5 方法
---->权限修饰符 返回值类型 方法名(形参){
方法体
return
}
----> 方法中 也可以调方法
方法中不能定义方法
6 JVM内存结构
编译完源程序后 生成一个或多个字节码文件.class
我们使用JVM中的类的加载器和解释器对生成的字节码文件进行解释运行。。这意味着,需要将字节码文件对应的类加载到内存中 涉及到内存解析
《JVM规范》
虚拟机栈:
堆:
方法区:
7 对象数组的内存解析
引用类型的变量 只能存储两种 null 或者 地址值
对null进行掉方法的操作 会产生异常
8 匿名对象 不声明对象变量
new Phone().sendEmail();
new Phone().playGame(); //这两个不是一个对象
9 方法重载
方法 和 构造器方法
同一个类 同一个方法名 不同的形参列表
注意 返回值、权限修饰符、形参变量名不重要
10 可变个数的形参
---->格式 : 数据类型 … 变量名
----> 允许直接定义能和多个实参想匹配的形参
---->可以传入 0个 1个 或多个 参数
---->注意
Public void show(String … strs){}和public void show(String[] strs){}不能构成重载(尚硅谷 207)
----> 可变个数形参 需要写在形参列表的末尾
----> 一个形参列表最多只能定义一个 可变个数形参
11 方法参数的值传递机制
---->java方法的参数传递只有一种方式 :值传递
---->赋值操作:
基本数据类型:赋值的是数据
引用数据类型:赋值的是地址值
---->方法形参:值传递
12 几个注意点
第二个里边重载了println
13 递归方法
还没看!!!!
14 super关键字用法
(1)在子类的成员方法中,调用父类的成员变量
(2)在子类的成员方法中,访问父类的成员方法
(3)在子类的构造方法中,访问父类的构造方法
15 四种权限修饰符的理解
封装性的体现需要权限修饰符:可以类的内部结构 // 只有 缺省 和 public可以修饰类
public:
private:
缺省:
protected:
16 属性赋值的过程
---->书信复制到先后顺序
(1)默认初始化
(2)显示初始化
(3)构造器初始化
(4)对象.方法 对象.属性
(1)-(2)-(3)-(4)
17 JavaBean
所谓JavaBean, 是符合如下标准的Java类:
(1)类是公共的
(2)有一个无参的公共构造器
(3)有属性,且有get set方法
18 UML类图
19 this 关键字的使用
this可以修饰 属性 方法 构造器
20 MVC设计模式
model / view / controller
视图模型层 / 控制器层 / 数据模型层
21 import
如果 使用的是 java.lang包下的类 可以不用import
22 项目二的理解