面向对象初识

面向对象
OOP(Object Oriented Programming),面向对象程序设计是一种非常新颖的编程思想,他的基本特征是封装、多态、继承、抽象。本质上是把现实的一些事物看成一个抽象的模型,用模型来反映现实世界的具体事物特征,简单来说就是把现实世界的某些事物抽象化,然后放到计算机中把它实例化,让计算机可以读懂。

// 定义一个类,我们需要考虑的内容没有那么多,大部分的功能都可以利用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 + '\'' +
                '}';
    }
}

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("只要敲不死,就往死里敲!!!");
    }
}

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 = "XXX";
        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();
    }
}

类对象内存分析图
在这里插入图片描述
构造方法(Constructor)
问题1:
上面的代码中,使用了Person的类的无参构造方法,但是该方法并没有在Person类代码中显式定义!!!
为什么可以使用?
反编译工具:
javap -c -l -private XXX.class
Java编译提供的无参数构造方法
在Java代码中,并没有显式定义使用类名的构造方法,但是Java编译器(javac.exe) 在代码编译阶段给我们程序员提供了一个无参的构造方法,用于初始化当前类对象的成员变量,同时可以和 new 关键字一起使用,创建类对象。

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

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

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

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

格式:
	{
		构造代码块
	}

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

静态代码块:
开发常用
局部代码块:
现在基本不用了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值