面向对象的基础

百知教育学习 - 胡鑫喆 - 面向对象的基础

一、什么是对象

  • 面向对象与面向过程
    • 面向过程: 从计算机执行角度出发 为代码执行过程为核心
    • 面向对象: 从人的角度出发,从现实世界角度出发
  • 面向对象思想:
    • 一切客观存在的事物都是对象,万物皆对象
    • 任何对象,一定具有自己的特征行为
      • 特征:成为属性,一般为名词,代表对象有什么
      • 行为:成为方法,一般为动词,代表对象能做什么
      • 举例 :
        • 汽车 车 继承 is a
        • 汽车 发动机 关联 has a
        • 汽车 司机 依赖 use a
    • 面向对象:先确定解决问题所需的对象,再建立对象间关系,从而确定过程
  • 程序中的对象在这里插入图片描述
  • java中的对象: 数据 代表生活中的一个对象

二、什么是类

  • 类的抽取:
    • 一组相同或类似的对象中,抽取处共性的特征和行为,保留所关注的部分
  • 类与对象的关系
    • 在这里插入图片描述

三、类的组成

  • 成员变量(实例变量):局部变量要求必须先赋值再使用,否则编译错误。
    • 成员变量与局部变量的区别
      • 在这里插入图片描述
  • 方法 :
    • 声明 : 修饰符 返回值类型 方法名 (形参列表) 抛出的异常 代表了对象能做什么
    • 实现: {代码块}

四、方法重载

  • 在一个类中,我们可以定义多个同名的方法,方法名相同,参数表不同 对于修饰符、是否有返回值无要求

    • 参数表不同: 参数个数不同,参数类型不同,参数类型排列不同

    • public void m(byte a){}

      public void m(byte b){} 不能构成重载,只是参数名不同罢了

  • 编译器在编译时会根据实参的类型,选择相应的方法去调用(向上就近匹配,不允许出现引用不明确的情况)

    • 引用不明确:

      • public void m(int a,double b){}

        public void m(double b,int c){}

        编译器会报错 因为不知道要调用两个方法中的哪个

      • public void m(int a,double b){}

        m(1,2); 编译器会把 2(int)转换为2.00(double)

      • public void m(double b,int c){}

        m(1,2); 编译器会把1(int)转换为1.00(double)

  • println就是个方法的重载

    • 在这里插入图片描述
  • 重载的作用: 允许类中的同类方法同名,屏蔽参数的差异(参数不同,同一行为的行为方式会不同)

五、构造方法(构造器)

  • 不能定义返回值类型

  • 方法名必须和类名相同

  • 不能手工调用,只能在对象的创建过程中自动调用一次

  • 对象的创建过程:

    • 1.分配空间 属性被赋予默认值

    • 2.初始化属性 属性被赋予初始值

    • 3.调用构造方法 属性可以被赋予构造参数

    • 4.调用本类构造方法

      public class Student{

      String name;

      int age;

      pubic Student(String n,int s){

      name=n;

      age=s;

      }

      }

    • 如果一个类中没有定义任何构造方法,系统会提供默认的无参的公开构造方法

  • 对象的内存分配

    • 第一步 :在这里插入图片描述

    • 第二步:在这里插入图片描述

    • public static void main(String[] args){

      Student s1=new Student();

      Student s=new Student();

      Student s2=s1; 把s1的地址赋给s2/

      s2.age++;

      s=null;

      System.out.println(s.age); // 空指针异常

      System.out.println(s1.age); //19 对象类型的变量传地址

      }

      class Student{

      int age=18;

      }

    • 引用 : 对象类型的变量(除去8种基本类型的变量,都属于引用) 存储对象的地址

      方法传递参数:基本类型的变量传值 ------对象类型的变量传地址(实参和形参指向同一对象)

  • 对象的创建和访问

    • 创建对象的语法:new 类名(构造参数表)

      • 比如 : Student类中有name,age属性,构造方法 public Student(String name,int age){this.name=name;this.age=age};

        ​ int a=new Student(“lincy”,17); 错误 java语言是强类型的语言,int型的a,但是构造方法参数里有String类型

        用Student类型创建对象即可 Student a=new Student(“lincy”,17);

    • 访问对象的语法: 变量名.属性

      变量名.方法(实参列表)

this关键字

  • this : 引用 指向当前对象 访问类中的属性和方法,如果不加引用,默认为this引用

    用于区分成员变量和局部变量

  • this(); 用在构造方法中,表示调用本类其它构造方法,必须是构造方法的第一条语句 所以一个构造方法中不能出现两个this();

  • public MyClass(){

    }

    public MyClass(int i){

    this(); //调用本类中无参的构造方法

    System.out.println("OK");

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值