java学习笔记(六)面对对象

个人笔记,仅供参考

1、面向对象和面向过程

简单来说,面向过程就是让你自己做一个每一步,面向对象就是使用有相应功能的工具来完成。

例如:按特定格式打印一个数组

面向过程:

int[] array = {10,20,30,40,50};
        //打印格式为:[10,20,30,40,50]
        System.out.print("[");
        for (int i = 0; i < array.length; i++) {
            if(i == array.length - 1){//最后一个数
                System.out.println(array[i] + "]");
            }
            else
            {//不是最后一个数
                System.out.print(array[i] + ",");
            }
        }

面向对象:

System.out.println(Arrays.toString(array));

注:IDEA会自动导入Arrays类

这两者结果没有区别,主要区别是编程的思想。在这里,帮我们打印数组的Arrays类就被称为对象

面向对象的三个特征:

封装性

继承性

多态性

2、类和对象

什么是类:类是一组相关属性和行为的集合,可以看成是一类事物的模板

​ 属性就是该事物的状态信息,行为是该事物能做什么

什么是对象:对象是类的具体化实例,即类是对象的模板,对象是类的实体

3、类的定义

由属性和行为组成,以下为例子:

学生类示范

定义一个学生类,有姓名和年龄两个属性,吃法睡觉学习三个行为。

对应到java类中:

成员变量(属性):

​ String name;

​ int age;

成员方法(行为):成员方法没有static关键字

public void eat(){}
public void sleep(){}
public void study(){}

实际示范:

public class student {
    //成员变量
    //成员变量直接定义在类中,在方法外
    String name;
    int age;
    //成员方法
    //成员方法没有static关键字
    public void eat(){
        System.out.println("吃饭");
    }
    public void sleep(){
        System.out.println("睡觉");
    }
    public void study(){
        System.out.println("学习");
    }
}

4、对象的创建及其使用

通常情况,一个类不能直接使用,要创建一个对象才能使用

创建步骤:

  1. 导包,指出需要使用的类在什么位置,同一个包下可以不写导包
  2. 创建,格式:类名 对象名 = new 类名();
  3. 使用,使用成员变量:对象名.成员变量,使用成员方法:对象名.成员方法名(参数)
public class Demo4 {
    public static void main(String[] args) {
        //创建对象
        student stu = new student();
        //打印成员变量
        System.out.println(stu.name);
        //使用成员方法
        stu.eat();
        //重新赋值成员变量
        stu.name = "Alan";
        System.out.println(stu.name);
    }
}

5、对象可以当做参数传递给方法

public static void method(Phone parse){}

这个方法的参数是一个Phone类的对象

同样的,对象也可以当返回值

6、封装性

在java当中的体现有两点:

  1. 方法就是一种封装
  2. 关键字private也是一种封装

封装就是将一些细节信息隐藏,对外界不可见

7、private关键字

private关键字意为私有化,可以通过该关键字将需要保护的成员变量进行修饰。

private int age;

使用该关键字后,在本类当中仍然可以随意访问,但超出本类范围之外就不能直接访问了,如果要在类外对该成员变量赋值,需要通过类内的get/set方法。注意:方法名必须叫get xxx或set xxx

public void setAge(int num){
	age = num;
}//用来修改age,无返回值,有参数
public int getAge(){
    return age;
}//用来调用age,有返回值,无参数

可以在这两个方法内通过代码限制age的值。提高代码安全性

注意,布尔型的get方法名字应为isXXX,例如:

public boolean isMale(){
        return male;
        //布尔型的get方法名字是is
    }

8、this关键字

当方法的局部变量和类的成员变量重名时,根据就近原则会优先使用局部变量。

如果需要访问本类当中的成员变量,需使用this关键字(方法内)

this.成员变量名

通过谁调用的方法,谁就是this

9、构造方法

专门用来创建对象的方法,当我们用关键字new创建对象时,new后面的语句就是在使用构造方法

public 类名(参数类型 参数名称){
	方法体
}

注意:

  1. 构造方法的名称与类名必须完全一样
  2. 构造方法不要写返回值类型
  3. 构造方法不能return一个具体的返回值
  4. 如果没写构造方法,编译器会自动生成,没有参数,方法体什么都不做
  5. 构造方法也可以重载

构造方法的主要作用是,方便在创建对象是设置成员变量

10、定义一个标准的类

标准的类包含以下四部分

  1. 所有成员变量都使用private进行私有化
  2. 每一个成员变量都有一堆get/set方法
  3. 编写一个无参构造方法
  4. 编写一个全参构造方法
public class work_student {
    private String name;
    private int age;

    public work_student() {
    }

    public work_student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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;
    }
}

以上为一个标准的类

注意:在IDEA中构造方法和get/set方法可以通过IDEA自动生成,在Code—>Generate中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值