面向对象课堂笔记

时间:2022-09-20 08:51:41
1、重要的是思想,当前先掌握语法;真正的掌握要等到做项目的 时候。
2、JAVA是一门儿面向对象的计算机语言——“万物皆对象”
3. 面向对象的理解必须结合面向过程
4.面向过程,即是计划的制定者又是计划的执行者     面向对象,只是指挥角色,具体实现细节不需要关心。     面向对象基于面向过程
5、面向对象好还是面向过程能搞好?         具体情况具体分析。         如果执行流程比较简单——面向过程         如果执行流程比较复杂——面向对象
6、软件开发领域:         面向过程(简单程序:贪吃蛇,扫雷。。。)——>面向         对象(复杂程序:OA,Bos......)
7、现在的程序都是复杂的工程,而JAVA正是面向对象的。
8.先有类还是先有对象?     人的思维来讲:应该是先有具体的对象再有类     但是在JAVA中,语法结构上是先有类再有对象
9、先一枝独秀(重点突破)再遍地开花(整体掌握)
10、栈内存有个特点:先进后出(最先进栈的最后出去)
11、我自己的想法儿:先要建立一个类,然后再创建具体的对象,然后再把对象添加进集合(举例)         package edu.practice;
import java.util.ArrayList;
/*  * 定义一个方法:将集合中成绩等于60的学生返回  *   * 如果集合中没有    返回一个默认的学生(姓名:小明,年龄:38,分数:100),  * 并在main方法中打印该学生的信息  *   * 集合中存储的学生:  * 姓名:周星驰    年龄:58        成绩:98  * 姓名:李连杰    年龄:56        成绩:98  * 姓名:刘德华    年龄:60        成绩:98  *   * 分析:  *         定义方法  *         参数        ArrayList<学生>    list    返回值    学生  *         遍历结合,依次获取每个学生  *         拿着学生的分数与60分比较  *         如果等于    把当前的学生返回  *         如果没有等于60的同学  *         就创建一个学生对象    给学生对象赋值        将这个学生对象返回  *    * */ public class Practice02 {     public static void main(String[] args) {         ArrayList<Student> list = new ArrayList<Student>();
        // 姓名:周星驰 年龄:58 成绩:98         Student zhouxingchi = new Student();         zhouxingchi.name = "周星驰";         zhouxingchi.age = 58;         zhouxingchi.score = 98;
        // 姓名:李连杰 年龄:56 成绩:98         Student lilianjie = new Student();         lilianjie.name = "李连杰";         lilianjie.age = 56;         lilianjie.score = 98;
        // 姓名:刘德华 年龄:60 成绩:98         Student liudehua = new Student();         liudehua.name = "刘德华";         liudehua.age = 60;         liudehua.score = 98;
        list.add(zhouxingchi);         list.add(lilianjie);         list.add(liudehua);
        Student zhegeS = getStudent(list);         System.out.println("学生姓名:" + zhegeS.name + "-_-" + "学生年龄:" + "-_-"                 + zhegeS.age + "-_-" + "学生演技评分:" + zhegeS.score);
    }
    public static Student getStudent(ArrayList<Student> list) {         // 遍历集合,依次获取每个学生         for (int i = 0; i < list.size(); i++) {             Student zhegeS = list.get(i);             // 拿着学生的分数与98分比较             if (45 == zhegeS.score) {                 return zhegeS;             }
        }         // 如果没有等于60的同学         // 创建一个学生对象,给学生对象赋值 将这个学生对象返回         Student xiaoming = new Student();
        xiaoming.name = "路人甲";         xiaoming.age = 38;         xiaoming.score = 61;         return xiaoming;
    }
}
12、创建对象的格式:         类名    对象名 = new    类名();
13、通过已有的对象调用该对象的功能。格式:对象.对象属性;可以对该对象的属性赋值。
14、发现:事物其实就是由特点(属性)和行为(功能)组成的。

可以简单理解:属性就是数值,其实就是变量;行为就是功能,就是方法。功能的实现需要方法,功能的实现需要方法,功能的实现需要方法。。。


15、类是用于描述事物的,类中可以定义事物的属性和行为

  对象是通过描述的这个类,使用new关键字创建出来,通过对象就可以调用该对象具体的属性和功能了。

             16、局部变量和成员变量的区别:         区别一:定义的位置不同

定义在类中的变量是成员变量

定义在方法中或者{}语句里面的变量是局部变量

    区别二:在内存中的位置不同

成员变量存储在对内存的对象中

局部变量存储在栈内存的方法中

    区别三:声明周期不同

成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失

局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失

    区别四:初始化不同

成员变量因为在堆内存中,所有默认的初始化值

局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。


17、一般对成员属性的访问动作:赋值(设置 set),取值(获取 get),因此对私有的变量访问的方式可以提供对应的 setXxx或者getXxx的方法。


18、为啥学到面向对象,get xxx    set xxx方法对外提供访问方式,方法格式就没有static 了?


19、package it.cast;


import java.util.ArrayList;import java.util.Random;import java.util.Scanner;
/* * 当前版本V0.1 * 捋清业务逻辑,准备数据 * 1.键盘录入三个学生信息 * 2.打印所有学生信息 * 3.随机选出一名学生自我介绍:说出自己姓名年龄 *  * 准备数据: * 1.抽取一个描类Student * 2.将录入的数据组织成学生对象,存储进集合 *  * 版本V0.2:键盘录入学生信息,并且存储进集合 * 版本V0.3:打印当前所有学生信息 *  * */public class MainApp3 {    public static void main(String[] args) {        // 创建一个集合对象        ArrayList<Student> xuesheng = new ArrayList<Student>();        // 往集合添加数据        addStudent(xuesheng);        // 输出所有学生信息        printStudent(xuesheng);        // 随机选择一个学生自我介绍        randomName(xuesheng);    }
    public static void randomName(ArrayList<Student> xuesheng) {        Random ran = new Random();        // 生成随机数        int index = ran.nextInt(xuesheng.size());// [0,size)        // 根据随机数获取对象        Student tongxue = xuesheng.get(index);        // 调用say方法        System.out.println("====================");        tongxue.say();    }
    public static void printStudent(ArrayList<Student> xuesheng) {        System.out.println("===============学生信息==============");        // 循环取出每一个学生对想        for (int i = 0; i < xuesheng.size(); i++) {            // 把获取到的学生对象用一个变量接收            Student tongxue = xuesheng.get(i);            System.out.println("姓名:" + tongxue.getName() + "年龄:"                    + tongxue.getAge());        }    }
    public static void addStudent(ArrayList<Student> xuesheng) {        Scanner sc = new Scanner(System.in);        for (int i = 0; i < 3; i++) {            // 创建一个新的Student对象            Student tongxue = new Student();
            System.out.println("请你输入第" + (i + 1) + "个学生的姓名:");            String name = sc.next();            tongxue.setName(name);
            System.out.println("请您输入第" + (i + 1) + "个学生的年龄:");            int age = sc.nextInt();            tongxue.setAge(age);
            // 最后一定要添加到xuesheng集合            xuesheng.add(tongxue);
        }
    }
}
20、向集合中添加调用set方法(放进去用set)        获取集合中的数据调用get方法(拿出来用get)
21、抽取一个描述类Student        并不是指从集合中或者是数组中或者是其他存储器中,而是,自己写的一条定义Student的类
22、有时候一定要打破惯性的思维,不要上来就for循环for循环for循环。。。        还有 i 的用途是多变的。
23.、对象名 . 方法名:对象通过方法获取属性
24、Random r = new Random();int num = list.size();int index = r.nextInt(list.size());三合一int index = new Random().nextInt(list.size());================================Random r = new Random();int num = list.size();int index = r.nextInt(list.size());三合一int index = new Random().nextInt(list.size());================================Random r  = new Random();int num = list.size();int index = r.nextInt(list.size());三合一int index = new Random().nextInt(list.size());       
================================================================
面向对象: 1、JAVA是一门面向对象的计算机语言——“万物皆对象”
2、面向过程与面向对象
3、面向对象编程(oop)      a:创建类      b:根据类创建对象      c:调用功能
4、类和对象(对象名 . 方法名时,方法所在的栈空间与对象名对应的对象)      a:类:具有相似属性或行为的事物统称(抽象的)      b:对象:是具体的事物,老婆是抽象的吗?       5、局部变量和成员变量的区别(方法参数为局部变量)      A:局部变量:方法中的变量     成员变量:类中方法外的变量         即定义的位置不同。      B:局部变量存储在栈中     成员变量存储在堆中         即在内存中的位置不同。      C:局部变量随着所属大括号结束而释放     成员变量随着对象的消失而消失,作用在整个类中         即生命周期不同。      D:局部变量:必须初始化完成才能使用     成员变量有初始化值         即初始化不同
6、参数传递(内存图)
7、封装(面向对象的三大特征之一:封装、继承、多态)
8、封装的实现:(私有仅仅是封装的体现形式)遵循JavaBeam规范      A:私有化属性      B:提供set和get方法,进行赋值和获取
9、this关键字(this是指当前对象,即谁调用的这个方法)      a:成员变量和局部变量可以重名,调用时,调用局部变量(方法中的变量)         如果要使用成员变量(类中方法外的变量)就加this关键字。      b:内存(内存图)         面向对象课堂笔记