Chp7-面向对象基础

目录

什么是对象?

对象的组成

对象间的关系

重新认识类

类和对象的关系

类的组成

创建对象

对象的使用

构造方法

语法

语法特点

使用特点

方法重载

规则

使用

对象的创建过程

this关键字

this.

this()

使用


什么是对象?

  • 从java思想上看: "万物皆对象"

    • 对象: 操作单位

  • 从程序上看: 是一个存储空间, 内部可以存储一个对象的所有内容

对象的组成

  1. 特征: 都有什么

  2. 行为: 会做什么

对象间的关系

  1. is a: 一个对象继承自另一个对象

    • 动物是一个对象 狗是一个对象

    • 狗 是一个 动物 Dog is a Animal

    • 狗继承自动物

  2. use a: 一个对象使用另一个对象

    • 电脑是一个对象 程序员是一个对象

    • 程序员使用电脑

  3. has a: 一个对象包含另一个对象(一个对象是另一个对象的组成部分)

    • 键盘是对象 显示器是一个对象 电脑是一个对象

    • 键盘和显示器是电脑的组成部分

    • 电脑包含键盘和显示器

重新认识类

作用为盛放对同一批对象特征和行为的描述

普通类(容器): 盛放代码和主函数,可以使内部代码执行 com.xxx.test

描述型的类(容器+模板): 存放对对象的描述 com.xxx.entity

类和对象的关系

  1. 类是对象的模板

  2. 对象是类的实例

  3. 一个模板可以创建出多个相同或相似的实例

类的组成

  1. 属性: 用来描述对象特征, 也成为全局变量|成员变量等

    • 语法:

      第一种: 只声明  (常用)
        数据类型 属性名;
      第二种: 声明的同时赋初始值
        数据类型 属性名=值;
    • 位置: 类以内,其他内容以外. 通常写在类的最上方

    package com.by.entity;
    ​
    /**
     * 用来描述学生对象
     */
    public class Student {
        String name;//姓名
        int age;//年龄
        double score;//成绩
       // String className = "206班";
    }
    • 特点: 具有默认值

    • 与局部变量的区别:

      局部变量属性
      位置方法内方法外
      作用范围从定义行到直属代码块结束至少整个类
      命名冲突同一作用范围内不可重名可以和局部变量重名,局部变量优先级更高
      默认值没有
  2. 方法: 用来描述对象行为. 也成为成员方法|实例方法等

    • 语法:

      访问修饰符 返回值类型 方法名(形参列表){
          //操作语句
          //return语句
      }

      函数就是加了static的方法

      普通方法对于参数和返回值的使用与函数完全一致

    • 位置: 类以内, 其他内容以外. 通常写在属性下方

    package com.by.entity;
    ​
    /**
     * 用来描述学生对象
     */
    public class Student {
        String name;//姓名
        int age;//年龄
        double score;//成绩
    ​
        //学习方法
        public void study(){
            System.out.println("学生在学习...");
        }
    ​
    }

创建对象

类名 对象名=new 类名();

对象的使用

  1. 访问属性

    取值:  对象名.属性名
    赋值:  对象名.属性名=值;

    属性的完整语法:

    访问修饰符 数据类型 属性名;

    当访问修饰符省略时,表示该属性访问修饰符为default

    访问修饰符范围
    public公共的,任意位置都可访问
    default默认的, 只有本类和同包可以访问
  2. 访问方法

    对象名.方法名(实参列表)
package com.by.test;
​
​
import com.by.entity.Student;
​
/**
 * 测试类
 */
public class Test {
    public static void main(String[] args) {
        // 创建一个学生对象
        Student stu1=new Student();
        //赋值
        stu1.name="张三";
        stu1.age = 20;
        stu1.score = 90.0;
        //取值
        System.out.println(stu1.name);
        System.out.println(stu1.age);
        System.out.println(stu1.score);
        //调用学习方法
        stu1.study();
​
        //System.out.println(stu1);
        Student stu2 = new Student();
        System.out.println(stu2.name);
        System.out.println(stu2.age);
        System.out.println(stu2.score);
​
    }
}

构造方法

  • 位置: 类以内,其他内容以外. 通常写在属性下方

语法

  1. 无参构造

    访问修饰符 类名(){
        
    }
  2. 有参构造

    访问修饰符 类名(数据类型 参数名1,数据类型 参数名2,..){
        属性名1=参数名1;
        属性名2=参数名2;
        ..
    }
//无参构造
    public Student(){
        
    }
    //有参构造
    public Student(String n,int a,double s){
        //用参数给属性赋值
        name = n;
        age = a;
        score = s;
    }

语法特点

  1. 方法名必须与类名一致

  2. 没有返回值类型部分

使用特点

  1. 作用为创建对象, 创建对象必须使用构造

  2. 类名 对象名=new 类名();
    • 第一个类名: 声明要创建哪个类的对象

    • 第二个类名: 构造方法名, 调用构造方法实现创建对象

  3. 只能通过new关键字调用

    new 类名(实参);
  4. 利用有参构造创建对象:

    类名 对象名=new 类名(值1,值2,..);
  5. 无参构造和有参构造的区别

    • 无参构造: 只能创建对象, 属性保留默认值

      • 有参构造: 可以在创建对象的同时直接给属性赋予初始值

    • 无参构造至多存在1个,有参构造可以存在多个

  6. 类中默认存在一个无参构造, 当显式定义构造之后,该无参构造将会失效

方法重载

实际开发中,为了降低功能相同或相似方法的开发难度, 允许方法重载, 目的为提高程序员的开发效率

规则

在同一类中,方法名相同,参数列表不同

与访问修饰符、返回值类型、参数名、异常没有关系

使用

从上至下的匹配参数列表,匹配成功之后执行

方法重载无法提高程序的执行效率

对象的创建过程

  • 又名属性的三个赋值时期

  1. 给属性开辟空间,赋默认值

  2. 给属性赋声明属性时的初始值

  3. 执行构造时给属性赋值

只有默认值是必须执行的

先构建属性,再执行构造

this关键字

  • 代表当前对象

this.

this.属性名 :指明调用本类属性
  • 更新之后的标准有参构造语法:

    访问修饰符 类名(数据类型 属性名1,数据类型 属性名2,..){
       this.属性名1=属性名1;
       this.属性名2=属性名2;
       ..
    }
    public class Student {
        public String name;
        public int age;
        public double score;
    ​
        //无参构造
        public Student(){
    ​
        }
        //有参构造
        public Student(String name,int age,double score){
            //属性=形参;
            this.name = name;
            this.age = age;
            this.score = score;
        }
    }
this.方法名(实参列表) :指明调用本类的方法

this()

  • 调用本类其他构造内容

this(实参列表)
使用
  1. 根据实参列表决定调用的是哪个构造的内容

  2. 位置: 必须写在构造方法有效代码第一行

  3. 不可循环调用或自己调用自己

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值