面向对象初见面

  1. 代码格式很简单,甚至于不用你写!!!

    // 定义一个类,我们需要考虑的内容没有那么多,大部分的功能都可以利用IDE工具完成。
    package com.qfedu.object;

    public class Student {
    private int id;
    private String name;
    private int age;
    private String className;

     public Student() {
     }
    
     public Student(int id, String name, int age, String className) {
         this.id = id;
         this.name = name;
         this.age = age;
         this.className = className;
     }
    
     public int getId() {
         return id;
     }
    
     public void setId(int id) {
         this.id = id;
     }
    
     public String getName() {
         return name;
     }
    
     public void setName(String name) {
         this.name = name;
     }
    
     public int getAge() {
         return age;
     }
    
     public void setAge(int age) {
         this.age = age;
     }
    
     public String getClassName() {
         return className;
     }
    
     public void setClassName(String className) {
         this.className = className;
     }
    
     @Override
     public String toString() {
         return "Student{" +
                 "id=" + id +
                 ", name='" + name + '\'' +
                 ", age=" + age +
                 ", className='" + className + '\'' +
                 '}';
     }
    

    }

  2. 生活中的面向对象

    大早上想喝粥

    早上去谷婆婆
    找一个座位
    找服务员点菜
    等服务员上菜

    自己做
    买米,小米,大米,绿豆
    淘米
    加水
    煮粥 2:30小时
    喝粥
    洗锅,刷碗

    喝咖啡

    找一下星巴克
    柜台排队
    选择自己喜欢喝的饮品 CC
    付钱
    等待
    品尝
    28-45S

    自己做
    清理所有的器皿
    选咖啡豆 苏门答腊黄金曼特宁 苦,不酸
    称重 15G
    磨豆子 中度研磨
    水称重 160ML - 180ML
    烧水
    导入咖啡粉 煮1分钟
    用热水烫一下杯子
    过滤
    导入牛奶
    品尝
    清理所有的器皿 25分钟

    从生活角度来看面向对象和面向过程:
    面向对象:
    找合适的人,做合适的事
    面向过程:
    亲力亲为,自力更生。

  3. 类和对象

    类 对象
    人 马云爸爸,王校长,麻花藤,沈腾,Jobs
    狗类 王可可,忠犬八公,王子,牛牛
    手机类 骚磊的iPhone7P,晓磊的mi2
    车类 骚磊的电动车,大骚磊的Audi A4L 45TFSI

    类:
    是对一类事物的统称,带有事物的属性描述和行为描述
    对象:
    是一个独立的,具体的,唯一的,特殊的个体

  4. Java中定义类的格式

    /*
    在Java中定义类的格式:
    public class 类名 {
    对于当前类的属性描述
    对于当前类的行为描述
    }

    1. 使用变量来描述属性!!!
      成员变量!!! Field
      */
      public class Person {
      // 姓名描述 使用的数据类型是String类型,字符串
      String name;

      // 年龄描述,使用的数据类型是int类型
      int age;

      // 性别描述. true表示男 false表示女
      boolean gender;
      }

    /*
    成员变量是对于当前类所有对象的属性描述,每一个对象中的属性是不尽相同,一般情况下不会初始化!!!
    */

    /*
    2. 成员方法是用来描述行为!!!
    */
    public class Person {
    // 姓名描述 使用的数据类型是String类型,字符串
    String name;

     // 年龄描述,使用的数据类型是int类型
     int age;
     
     // 性别描述. true表示男 false表示女
     boolean gender; 
     
     // 成员方法 对于吃饭行为的描述
     public void eat() {
     	System.out.println("烤羊排!!!");    
     }
     
     // 成员方法,对于睡觉行为的描述
     public void sleep() {
         System.out.println("中午不睡,下午崩溃!!!");
     }
     
     // 成员方法,对于写代码的行为描述
     public void coding() {
         System.out.println("只要敲不死,就往死里敲!!!");
     }
    

    }

  5. Java中创建类对象的格式

    new 关键字:
    new关键字是要求JVM在内存的堆区申请一块内存空间。空间的大小受到数据类型约束。

    Java创建对象的格式:
    类名 类对象 = new 类名(可能用到的初始化参数);

    public class Demo1 {
    public static void main(String[] args) {
    // 类名 类对象 = new 类名(可能用到的初始化参数);
    // 这里创建了一个 Person类对象,对象名叫做 perosn
    Person person = new Person();

         /*
         int[] arr = new int[10];
         arr.length 获取数组的容量
         . 这是一个运算符,中文 的
         参考数组的操作,我们在使用类对象的成员变量时可以通过 . 运算符来操作
          */
    
         /*
         借助于 Person类对象 person 对当前类对象中的成员变量进行赋值操作
          */
         person.name = "骚磊";
         person.age = 16;
         person.gender = true;
    
         /*
         借助于 Perosn类对象 perosn 获取当前类对象中保存的成员变量数据
          */
         System.out.println(person.name);
         System.out.println(person.age);
         System.out.println(person.gender);
    
         /*
         Scanner sc = new Scanner(System.in);
         sc.nextInt(); 调用Scanner扫描器对象 sc 中的 nextInt() 方法
          */
         /*
         借助于 Person 类对象 perosn 通过 . 运算符调用类内的成员方法
          */
         person.eat();
         person.sleep();
         person.coding();
     }
    

    }

  6. 类对象内存分析

  7. 构造方法【行为习惯】Constructor

构造方法是用来初始化当前类的类对象的!!!

问题1:
	上午的代码中,使用了Person的类的无参构造方法,但是该方法并没有在Person类代码中显式定义!!!
	为什么可以使用???

反编译工具:
	javap -c -l -private XXX.class



	在Java代码中,并没有显式定义使用类名的构造方法,但是Java编译器(javac.exe) 在代码编译阶段给我们程序员提供了一个无参的构造方法,用于初始化当前类对象的成员变量,同时可以和 new 关键字一起使用,创建类对象。

问题2:
	构造方法的格式:
	public 类名(初始化参数) {
		初始化语句;
	}

问题3:
	当代码中定义了其他的构造方法,但是没有定义无参构造方法,那么该无参构造方法不能再使用!!!
	要求:
		无论什么时候一定要留有一个无参构造方法备用!!!

注意事项:
	1. 构造方法的名字一定是类名,而且其他成员方法不能使用类名作为方法名
	2. 构造方法没有返回值,并且不需要使用void填充位置
	3. 构造方法可以有多个,但是要求方法中参数类型不能完成一致。
  1. 构造代码块 【考点】

初始化当前类的所有类对象,只要调用当前类的构造方法,就一定会执行构造代码块中的内容

格式:
	{
		构造代码块
	}
位置:
	成员变量之后
	构造方法之前

有两个兄弟
静态代码块:
	开发常用
局部代码块:
	现在基本不用了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值