面向对象1

一.面向对象思想

  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());   
    }
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值