总结笔记七
01-面向对象介绍
-
问题 : 什么是面向对象 ?
-
Java 万物皆对象
-
面向对象并不是一个技术, 而是一种指导思想
-
以什么形式去组织代码
-
以什么形式去解决问题
-
生活中解决问题, 就是通过一个个的对象在一起打交道, 从而解决了问题
-
代码如果也能按照生活中的这套思想, 程序就会变得很简单, 代码也会更加方便让人理解.
-
-
-
举例 :
-
想要解决键盘录入 --- Scanner对象
-
想要解决随机数 --- Random对象
-
创建一个窗体 --- JFrame对象
-
-
面向对象我们重点学习的是什么 ?
-
自己如何设计对象
-
学习已有的对象如何进行使用
-
02-类和对象
-
问题 : 什么是类 ?
-
类是一组相关属性和行为的集合 , 可以将其理解为是对象的 [ 设计图 ]
-
类是对象的设计图 , 因此, 在创建对象之前, 就需要先有类的存在
-
-
-
问题 : 类和对象的关系 ?
-
依赖关系 : 需要根据类去创建对象
-
数量 : 一对多的关系, 根据一个类, 可以创建出多个对象.
-
03-类的组成
-
属性 (名词的描述 --- 姓名, 年龄, 品牌, 价格...)
-
成员变量 : 成员变量的定义格式跟之前一样, 只不过位置发生了改变
-
类中, 方法外
-
-
-
行为 (动词的描述 --- 吃饭, 学习, 打电话, 发短信...)
-
成员方法 : 成员方法跟之前定义方法的格式一样, 只不过去掉了 static 关键字
基础班的编写:
在带有 main 方法的测试类中, 编写方法, 都带 static
反之, 都不带 static -
04-对象的创建和使用
public class Student {
String name;
int age;
public void show(){
...
}
}
-
创建对象 :
-
类名 对象名 = new 类名();
Student stu = new Student();
- 细节: 打印对象名, 会看到对象的内存地址
全类名@十六进制地址值
com.itheima.oop.Student@233a4f1 -
-
调用成员变量 :
-
对象名.变量名;
stu.name = "张三";
System.out.println(stu.name);
- 细节: 当我们创建对象之后, 没有给成员变量赋值, 而是直接打印 --> 看到成员变量的默认初始化值. -
-
调用成员方法 :
-
对象名.方法名(实际参数);
stu.show();
-
05-对象的内存图
-
单个对象内存图
-
两个对象内存图
-
两个引用指向相同内存图
-
不要求自己会画, 一定要打开ppt, 将流程梳理清楚
-
06-成员变量和局部变量的区别
类中位置不同 :
成员变量: 方法外
局部变量: 方法内
初始化值不同 :
成员变量: 有默认初始化值
局部变量: 没有默认初始化值, 使用之前必须赋值, 才能使用
内存位置不同 :
成员变量: 堆内存
局部变量: 栈内存
生命周期不同 :
成员变量: 随着对象的创建而存在, 随着对象的消失而消失.
局部变量: 随着方法的调用而存在, 随着方法的弹栈而消失.
作用域 :
都在自己所归属的大括号中有效.
07-this关键字
-
介绍 : 代表当前类对象的引用 (地址)
-
哪一个对象调用的方法, 方法中的this, 就代表的是哪一个对象
-
stu1.method() ----> this ---> stu1
-
stu2.method() -----> this ---> stu2
-
-
情况 : 如果局部变量和成员变量重名, Java会根据就近原则, 优先使用局部变量
-
如果非要使用成员变量的话, 可以使用this.进行区分
-
08-构造方法
-
问题 : 什么是构造方法(构造器) ?
-
在创建对象的时候, 一定会执行的方法
-
-
问题 : 构造方法的格式 ?
-
方法名与类名相同, 大小写也必须一致
-
没有返回值类型, 连void 都没有
-
没有具体的返回值 (不能通过return语句带回结果数据)
-
-
问题 : 构造方法的执行时机 ?
-
在创建对象的时候, 被系统自动调用执行
-
每创建一次对象, 就会执行一次构造方法
-
且不能手动调用 --- stu.Student() ; 错误 !!!
-
-
问题 : 构造方法的作用 ?
-
本质作用 : 创建对象
-
结合执行时机 : 在创建对象的时候, 直接给成员变量赋值
Student stu = new Student("张三",23);
-
-
构造方法的细节 :
-
如果一个类中, 没有编写任何构造方法, 系统将会提供一个 [默认的] [无参数的] 构造方法
-
如果手动编写过构造方法, 系统将不会再提供那个默认的无参构造构造
-
建议 : 无参 \ 带参构造全部手动给出
-
09-封装
-
面向对象三大特征 : 封装 , 继承 , 多态
-
封装概述 : 隐藏实现细节, 仅对外暴露公共的访问方式
-
封装在代码中常见的体现 :
-
将属性抽取到类中, 这是对 [数据] 进行的封装
-
要是没有类和对象, 用户的数据, 就是一些零散的变量
-
有了类和对象, 将数据封装到对象里面, 所面向的就是一堆整体的对象了
-
-
将代码抽取到方法中, 这是对 [代码功能] 进行的封装
-
printArray () -- 方法的编写者, 对代码功能进行了封装
-
我们作为使用者, 不需要关注内部的实现, 只需要关心如何使用即可
-
-
10-权限修饰符
-
权限修饰符可以修饰 :
-
成员变量
-
成员方法
-
构造方法
-
-
private : 同一个类
-
默认的 : 同一个类, 同一个包下
-
protected : 明天讲
-
public : 任意位置
今后用的最多的 : private public
11-标准的 JavaBean 类 (重中之重)
-
所有成员变量 private 私有
-
提供空参 \ 带参构造方法
-
提供对应的 setXxx 和 getXxx方法
12-窗体的绘制
package com.itheima.test;
import javax.swing.*;
public class JFrameTest {
public static void main(String[] args) {
// 创建窗体对象
JFrame frame = new JFrame();
// 设置窗体的大小 单位: 像素点
frame.setSize(514,595);
// 设置窗体居中
frame.setLocationRelativeTo(null);
// 设置窗体置顶
frame.setAlwaysOnTop(true);
// 设置窗体标题
frame.setTitle("石头迷阵单机版v1.0");
// 设置窗体的关闭模式
frame.setDefaultCloseOperation(3);
// 设置窗体可见 - 这句代码请在最后进行编写.
frame.setVisible(true);
}
}