面向对象入门

一.面向对象

1.1 面向对象介绍

java编程核心就是面向对象开发(oop)

面向对象:做一件事情,调用对象来完成

面向对象的三大特性

  • 封装

  • 继承

  • 多态

  • 抽象

  • 接口

1.2 面向对象开发前提

    • 解释:类就是具有相同属性和行为的一系列对象的集合
  • 方法(动词)
    • 解释:即完成一些功能的动作行为
    • 简单说,就是java中的方法
  • 属性(名词)
    • 解释:即描述这一类的特征(即学生有学生证,班级)
  • 对象
    • 解释:对象就是类的具体体现

类,属性,行为,对象 什么关系??

  • 类包含属性和行为(人类有身高体重年龄属性,吃饭的行为)
  • 类创建对象,或者说对象由类产生(通过new类创建出对象)
  • 对象也有属性和行为,而且属性还有具体值,行为还能具体体现(张三这个人的对象,具体身高180cm,体重50kg,年龄18,还能具体表现出吃饭的行为)

1.3 练习

  • 1.定义一个手机类
  • 2.有属性:颜色,价格,品牌
  • 3.有方法:打电话,玩游戏
//手机类
public class Phone {
    /**
     * 属性,其实就是变量
     * [修饰符] 数据类型 属性名   ---  声明
     * 前面的修饰符可写可不写:public等其他三个
     */
    String color;//颜色
    double price;//价格
    String brand;//品牌

    /**
     * 方法,与之前写的方法基本一致
     * 【修饰符】 返回值 方法名(){方法体}
     * 前面的修饰符可写可不写
     * 只有一处不一样,就是不需要定义static
     */
    //打电话的方法
    public void call(int num){
        System.out.println("给"+ num+"打电话");
    }
    //玩游戏的方法
    public String playGame(){
        System.out.println("玩游戏");
        return "Victory";
    }
}

1.4 创建对象

创建对象的语法:

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

​ 练习:创建出手机类对象

//测试类
public class Demo1_oop {
    public static void main(String[] args) {
        //类名 对象名 = new 类名();
        //创建手机类对象
        Phone phone = new Phone();
        /**
         * Phone 是自己定义的类名
         * phone 对象名,即变量名,随便定义
         * = 赋值
         * new 新建对象,固定格式
         * Phone(),是类名(),固定格式
         */
    }
}

1.5 使用 对象

  • 属性
    • 使用属性语法:对象名.属性;
    • 给属性赋值:对象名.属性 = 值;
    • 取出属性值:数据类型 变量 = 对象名.属性;
  • 方法
    • 使用方法语法:对象名.方法;

​ 练习:对手机类的属性进行取值与赋值 ,并调用其方法

public class Demo2_oop {
    public static void main(String[] args) {
        //创建手机类对象
        Phone phone = new Phone();
        //-----------使用属性---------------
        /**
         * ----- 使用属性  -----
         * 属性取值
         *   数据类型 变量 = 对象名.属性;
         *   (创建对象后,属性都是默认值)
         * 属性赋值
         *   对象名.属性 = 值;
         */
        //属性取值 -- 若该属性没有赋值,则会返回该属性的默认类型值
        String brand = phone.brand;//取出对象phone的brand属性值
        System.out.println(brand);//null
        String color = phone.color;//手机颜色
        System.out.println(color);//null
        double price = phone.price;//手机价格
        System.out.println(price);//0.0
        //属性赋值
        phone.brand = "小米";
        phone.color = "黑色";
        phone.price = 6999.0;
        //再次查看属性
        System.out.println(phone.brand);
        System.out.println(phone.color);
        System.out.println(phone.price);
        /**
         * ----- 使用方法  -----
         * 对象名.方法名();
         * 1) 如果方法有参数,就必须传入实参
         * 2) 如果方法有返回值,建议接收
         */
        //调用call方法
        phone.call(110);
        //调用playGame方法
        String result = phone.playGame();
        System.out.println("游戏结果:"+result);
    }
}

1.6 创建对象的内存

java的数据类型基本类型

  • 基本类型
  • 引用类型:数组,接口,类
public class Demo4 {
    /**
     * 创建对象的内存
     * 1.编写java代码
     * 2.idea自动编译成class文件
     * 3.程序运行,Demo4.class字节码文件就会加载到内存
     * 4.main方法执行,进栈
     * 5.main方法内需要使用Phone类,此时会加载Phone.class文件
     * 6.声明手机p变量,创建Phone对象
     *  6.1 会在堆中开辟空间,分配地址,对象属性初始化
     *  6.2地址值赋值了对象名(即变量p),也就是引用
     */
    public static void main(String[] args) {
        //创建对象
        Phone p = new Phone();
        System.out.println(p);//com.qf.oop.Phone@1b6d3586   是地址值

        //取值 -- 如果未赋值,则会默认返回数据类型的默认值
        String color = p.color;
        System.out.println(color);//null

        p.color = "红色";
        System.out.println(p.color);//红色
        p.call(119);
    }
}

在这里插入图片描述

1.7 一个类创建多个对象

需求:创建多个手机对象,每个对象属性赋不同的值

//一个类创建多个对象
public class Demo5 {
    public static void main(String[] args) {
        //创建第一个对象
        Phone p1 = new Phone();//在堆中开辟出一块地址赋值给p1
        System.out.println(p1);//com.qf.oop.Phone@1b6d3586   是地址值
        p1.color = "黑色";
        p1.price = 3000.0;

        //创建第二个对象
        //只要有new,就会在堆中开辟空间,分配地址,属性初始化(即给变量第一次赋值)
        Phone p2 = new Phone();  //会在堆中开辟出一块新地址赋值给p2
        System.out.println(p2.color);//null
        System.out.println(p2.price);//0.0
    }
}

在这里插入图片描述

结论:

​ 1.一个类可以创建多个对象

​ 2.每创建一个对象就会在堆中开辟一块空间,都会有一个属于自己的地址值.

​ 即每个对象都会有属于自己的属性和方法,每个对象间属性和方法互不影响.

1.8 多个引用指向同一个对象

//多个引用指向同一个对象
public class Demo6 {
    public static void main(String[] args) {
        Phone p1 = new Phone();
        p1.color = "红色";
        p1.price = 3000.0;

        Phone p2 = p1;//引用传递
        //p1和p2两个引用指向内存的同一个对象  ---  即p1和p2使用同一个地址值

        System.out.println(p2.color);//红色
        System.out.println(p2.price);//3000.0

        p2.color = "白色";
        p2.price = 2000.0;

        System.out.println(p2.color);//白色
        System.out.println(p2.price);//2000.0
    }
}

在这里插入图片描述

应用场景就是,方法的参数列表是类名

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Su sir~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值