2021年7月23日

讲师:王博

第一阶段第二周

今日内容

·类和对象

·类和对象的内存分析图

·构造方法

1.面向对象的初始

编程语言中,有两种开发的思想:
面向对象,面向对象

C语言 面向过程

c++

Java 纯面向对象的

  1. 生活中的角度去理解面向对象和面向过程

买电脑:

去电脑商场去逛一圈或者在电商网站上浏览一下

比对

看配置,看售后,看价格

面向过程的思想:亲力亲为

我有一个朋友,懂电脑,而且手里面还有资源,我委托他,全权负责买电脑这个事就可以。

面向对象:找一个对象帮你干活

住:

首先得有房子

面向过程:1.选快地2挖地基3打灰4自己盖5自己住

面向对象:找一个施工队,你只需要交钱即可

面向对象:找专门的对象,做专门的事情

Arrays.toString()

面向过程:亲力亲为

  1. 面向对象的两个重要的概念

类:是对一切相似事物的统称,是一个泛泛(广泛)的概念。可以描述相似事物的特称和行为

特征:就是一类事物的属性,比如 人的年龄,人的性别,人的身高,人的体重

Java中使用变量(属性)来表示特征

Int age=23

行为:吃饭,喝水,睡觉,跑步

Java中使用行为来表示方法

对象:是一个具体的实体,是真实存在的实体

对象

咱们班级里的小明

咱们班级小明家里的二哈

手机

咱们班小明的小米手机

电脑

我的电脑

类和对象的关系:有类才有对象,对象是类的一个具体的实现

 

人类:

特征(在java中使用变量或属性表示特征):身高 年龄 体重 性别

行为(在java中使用方法来表示行为):吃饭,喝水,睡觉

  1. 声明一个类的语法格式

语法格式:

Public class 类名{

对于当前类属性的描述;

对于当前类行为的描述;

}

  1. 创建类对象

为什么要创建对象

让对象做一些专门的事情

使用关键字 new

Java创建对象的语法格式

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

只能在mian主函数中new

package com.liujinghe.class1;

public class Demo2 {
    public static void main(String[] args) {
        Dog dogdan = new Dog();
        dogdan.name = "旺财";
        dogdan.color = "粉色";
        dogdan.weight = 32.4;
        dogdan.sex='';
        System.out.println(dogdan.name+":"+dogdan.color+";"+dogdan.weight+";"+dogdan.sex);
        dogdan.fight();
        dogdan.lookHome();
        System.out.println(dogdan);//打印的是内存地址
    }
}

 

6.创建类和对象都在同一个文件中

package com.liujinghe.class2;
class Mouse{
    //老鼠属性:智慧wisdom 力量power 敏捷agility
    //老鼠方法:护主protector 破甲armorBreaking
    int wisdom;
    int power;
    int agility;

    public void protector(){
        System.out.println("护主技能启动");
    }
    public void armorBreaking(){
        System.out.println("破甲成功");
    }

    @Override
    public String toString() {
        return "Mouse{" +
                "wisdom=" + wisdom +
                ", power=" + power +
                ", agility=" + agility +
                '}';
    }
}
public class Demo1 {
    public static void main(String[] args) {
        Mouse mouse = new Mouse();
        mouse.agility=15;
        mouse.power=13;
        mouse.wisdom=10;
        System.out.println(mouse);
        mouse.armorBreaking();
        mouse.protector();
    }
}

 

7.类对象内存分析图

Jvm java虚拟机 需要占用电脑的内存

分区:栈区 堆区 方法区 回收区

 

8.构造方法

用来初始化当前类对象的

就是对当前成员属性进行赋值。

语法格式:

Public 类名(){

方法体

}

8.1无参数的构造方法

语法格式:

Public 类名(){

方法体;

}

注:构造方法是在对象创建的时候就执行

8.2有参数的构造方法

语法格式

Public 类名(参数){

方法体

}

package com.liujinghe.class3;

public class Person {
    String name;
    int age;
    //有参数的构造方法
    //通过实例化对象传入真实的值
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Person(String name) {
        this.name = name;
    }
}

8.3无参数的构造方法和有参数构造方法的注意事项

  1. 无参数的构造方法是默认的,写了有参数构造方法以后,默认无惨构造方法就不存在了。
  2. 构造方法必须是类名,其他的成员方法不能以类名来命名
  3. 构造方法没有返回值,并且不需要使用关键字void进行修饰
  4. 构造方法可以有多个,但是构造方法的参数是有数据类型的约束的
  5. 无论什么时候,都要写一个无参构造方法,以备用

package com.liujinghe.class4;
class Horse{
    String name;
    String color;
    int age;
    public Horse(){
    //无参数的构造
    }

    public Horse(String name, String color, int age) {
        //有参数构造
        this.name = name;
        this.color = color;
        this.age = age;
    }
}
public class Demo2 {
    public static void main(String[] args) {
        Horse horse = new Horse("汗血宝马","棕色",3);
        System.out.println(horse.name+","+horse.color+","+horse.age);
    }
}

9.构造代码块(了解)

实例化对象的时候,先调用了构造方法

构造方法执行的话,构造代码块就一定执行。

也是初始化类对象的

写的位置:成员变量之后,构造方法之前

语法格式:

{

方法体

}

package com.liujinghe.class4;
class Fish{
    String kind;//种类
    {
        System.out.println("这是构造代码块");
    }
    public Fish(){
        System.out.println("无惨构造方法");
    }
    public Fish(String kind){
        this.kind = kind;
        System.out.println("有参构造方法");
    }
}
public class Demo3 {
    public static void main(String[] args) {
        Fish fish = new Fish();
        Fish fish1 = new Fish("金鱼");
    }
}

10.局部变量

package com.liujinghe.class5;

public class Person {
    //成员变量 只要你在这个类中,就可以进行使用
    String name;
    int age;
    public void eat(){
        name = "狗蛋";
        int age1 =0;//局部变量,局部变量必须赋值
        System.out.println(age1);
        System.out.println(name);//可以使用成员变量
    }
}

10.1成员变量和局部变量的区别

区别

成员变量

局部变量

定义的位置

定义在类的大括号的后面

定义在方法体内

作用

描述当前类的属性

保存局部数据

初始值

是对应的当前初始化的“0”值

必须初始化,没有赋值就报错

所处的内存空间

堆里面

栈里面

作用域

类内都可以使用

声明的方法体中

package com.liujinghe.class5;

public class Person {
    //成员变量 只要你在这个类中,就可以进行使用
    String name;
    int age;
    public void eat(){
        name = "狗蛋";
        int age1 =0;//局部变量,局部变量必须赋值
        System.out.println(age1);
        System.out.println(name);//可以使用成员变量
    }
}

 

重点:声明类,创建类对象,构造方法

 

 

 

作业:写十二生肖

 

1封装 继承 多态

 

posted @ 2021-07-23 18:44  张三疯321  阅读(38)  评论(0编辑  收藏  举报