面向对象1

来源:互联网 发布:如何选择净水器 知乎 编辑:程序博客网 时间:2024/06/04 20:13

一.面向对象思想

  1. 基于过程思想:给一个需求,通过分析需求,然后一步一步的去实现,完成一个功能的具体步骤.
    面向对象思想:创建对象,使用对象调用功能!(主要:对象)

    举例:
    面向过程:
        打水:自己打水—>拿起杯子—>走到打水的地方—>打水
    面向对象:
        打水:让别人给我打水(只管水给我就可以了)—->喝水

  2. 在用面向对象思想体现的时候,我们应记着三个规则,更符合面向对象思想:

    • 首先分析有那些类
    • 接着分析每个类应该有什么
    • 最后分析类与类的关系
  3. 面向对象开发:就是不断的创建对象,使用对象,指挥对象做事情.

  4. 面向对象设计:就是在管理和维护对象之间的关系.

  5. 面向对象特征:
    封装(encapsulation)
    继承(inheritance)
    多态(polymorphism)


二.类与对象及其使用

  1. 类:是一组相关的属性和行为的集合

    • 借助事物理解类:
      事物是现实世界里面的一些具体的东西.
      描述一个事物:学生:姓名,年龄,性别  学习,打游戏
      描述事物的属性:姓名,年龄,性别
      描述事物的行为:学习,打游戏
      一个事物转换成类:`学生事物:属性:姓名,年龄,性别 行为:学习,打游戏`
      学生类:
      属性在类中叫成员变量:name,age,gender
      行为在类中叫成员方法:study(),playGame()
    • java中最基本的单元是类
  2. 对象是该类事物的具体体现
    例如:上述学生类的对象:班长,张三,李四….
    创建对象:类名 对象名 = new 类名() ;
    使用对象名去访问成员变量,成员方法:对象名.成员变量/对象名.成员方法

//创建一个学生类class Student{    //成员变量    String name;    int age;    char sex;    //成员方法    public void playGames(){        System.out.println("打游戏");    }    public void study(){        System.out.println("学习");    }       }//学生类的测试类public class Demo1 {    public static void main(String[] args){        //创建对象        Student a = new Student();        //访问成员方法        a.playGames();        a.study();        //访问成员变量        a.name = "张三";        a.age = 20;        a.sex = '男';            System.out.println(a.name+" "+a.age+" "+a.sex);    }}

这里写图片描述


三.成员变量和局部变量的区别

  1. 在类中的位置不同
    成员变量:类中方法外
    局部变量:方法内或者方法声明上

  2. 在内存中的位置不同
    成员变量:堆内存
    局部变量:栈内存

  3. 生命周期不同
    成员变量:随着对象的存在而存在,随着对象的消失而消失
    局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

  4. 初始化值不同
    成员变量:有默认的初始化值(int->0,引用类型->null)
    局部变量:没有默认的初始化值,必须先定义,赋值,才能使用。

  5. 注意:当局部变量和成员变量名称一致时就近原则

//定义一个基本类class Num{    //定义成员变量:类中方法外    int num = 100;    //定义一个成员方法    public void show(){        //定义局部变量:方法声明上/方法定义中        int num1 = 200;        System.out.println(num1);        //局部变量和成员变量同名,就近原则        int num = 300;        System.out.println(num);    }}public class Demo1 {    public static void main(String[] args){        //创建Num类的对象        Num a = new Num();        System.out.println(a.num);        a.show();    }}

这里写图片描述


四.匿名对象

  1. 匿名对象:没有名字的对象
  2. 调用:执行一次,不适合多次调用
  3. 匿名对象可以作为参数传递
//创建一个学生类class Student1{    public void show(){        System.out.println("学习");    }}class StudentDemo{    //将匿名对象作为形参    public void method(Student1 s){        s.show();    }}public class Demo2 {    public static void main(String[] args){        //创建一个有对象名的对象        Student1 a = new Student1();        a.show();        a.show();//这个对象将show调用两次        //匿名对象调用show        new Student1().show() ;        new Student1().show() ;//重新创建了一个对象,堆内存中产生内存空间        StudentDemo b= new StudentDemo();         //匿名对象作为参数        b.method(new Student1());        //链式编程        new StudentDemo().method(new Student1());       }}

这里写图片描述