面向对象课堂笔记

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:内存(内存图)
        
   




























  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值