java大数据开发之面向对象篇(封装一)

1.类和对象

1.1什么是对象?

万物皆对象,客观存在的事物都是对象

1.2什么是面向对象?

关注对象的动作叫做面向对象

比如:我要去超市买水果,水果是一个对象,我关注它的种类、大小、酸甜的这个过程叫做面向对象

1.3什么是类?

类是对现实生活中一类具有相同属性和行为的事物的抽象。

类的特点:

1.类是对象的数据类型

2.类是具有相同属性和行为的一组集合

1.4什么是对象的属性?

属性:对象具有的各种特征,每个对象的每个特征都有特定的值。

1.5什么是对象的行为?

行为:对象能够执行的操作

1.6类和对象的关系

类:是现实生活中具有相同属性和行为的事物的抽象

对象:是能看得见摸得着的实体

类是对象的抽象

对象是类的实体

1.7类的定义

类的重要性:是Java程序的基本组成单位

类的组成:属性和行为

属性:在类中用成员变量体现(在方法外定义的变量)

行为:在类中用成员方法体现(去掉static关键字的方法)

类的定义步骤:

①定义类

②编写类的成员变量  

③编写类的成员方法

例如:

手机类: 类名:手机

                成员变量:品牌、价格

                成员方法:打电话、发短信

public class phone {
    //编写类的成员变量
    String brand;
    int price;
    //成员方法
    public void call(){
        System.out.println("打电话");
    }
    public void sentMessage(){
        System.out.println("发短信");
    }

}

1.8对象的使用

①创建对象

格式:类名 对象名 = new 类名();

范例:phone p =new phone();

②使用对象

(1)给成员变量赋值:

格式:对象名.成员变量 = 变量值;

范例:p.brand="华为";

(2)调用成员方法

格式:对象名.成员方法;

范例:p.call();

案例:学生

需求:首先定义一个学生类,然后定义一个学生测试类,在学生测试类中通过对象完成 成员变量和成员方法的使用

分析:成员变量:姓名,年龄

           成员方法:学习、做作业

public class student {
    //定义成员变量
    String name;
    int age;
    //定义成员方法
    public void study(){
        System.out.println("我爱学习");
    }
    public void doHomework(){
        System.out.println("我在写作业");
    }

}
/*
        学生测试类 
 */
public class studentDemo {
    public static void main(String[] args) {
        //创建对象
        student s=new student();

        //使用成员变量
        System.out.println(s.name);
        System.out.println(s.age);

        s.name = "小白";
        s.age = 22;

        System.out.println(s.name);
        System.out.println(s.age);

        //使用成员方法
        s.study();
        s.doHomework();
    }
}

2.成员变量和局部变量

2.1什么是成员变量和局部变量?

成员变量:是指在类中定义的在方法以外的变量

局部变量:方法中的变量

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

java大数据开发之面向对象篇(封装一)

3.封装

3.1private关键字

①是一个权限修饰符

②能够修饰成员(成员方法和成员变量)

③作用是保护成员不被其他类使用,被private类修饰的成员只能在本类中才能访问

针对被private修饰的成员,如果需要被其他类使用,需要使用set变量名()和get变量名()方法

①set变量名()方法,用于设置成员变量的值,方法用public修饰

②get变量名()方法,用于获取成员变量的值,方法用public修饰

 3.2private关键字的使用

/*
    学生类
 */
public class student {
    //定义成员变量
    private int age;
    String name;

    //定义set方法
    public void setAge(int a){
        if(a<0||a>120){
            System.out.println("您输入的年龄有误");
        }else{
            age=a;
        }

    }

    //定义get方法
    public int getAge(){
        return age;
    }
    //定义成员方法
    public void show(){
        System.out.println(name+","+age);
    }
}
/*
   学生测试类
 */
public class studentTest {
    public static void main(String[] args) {
        //创建对象
        student s = new student();

        //使用成员变量并赋值
//        s.age=30;
//        s.age=-30;
        s.name="张学友";

        //使用成员方法
        s.setAge(30);
//        s.setAge(-30);
        s.show();
    }
}

3.3this关键字

①this关键字修饰的变量是成员变量

②什么时候使用成员变量? 

当成员变量与局部变量重名时,即解决局部变量隐藏成员变量。

3.4封装

①封装概念

是面向对象的三大特性之一(封装、继承、多态)

客观世界组成的成员变量和成员方法是隐藏在对象内部的,外界是无法直接访问的

②封装原则

将类的某些信息隐藏在内部,不允许外部程序直接访问,只能通过该类提供的方法访问被private修饰的成员,如:setXXX()和getXXX()方法

3.封装好处

通过方法控制成员的操作,提高了代码的安全性

把代码进行封装,提高了代码的复用性

4.构造方法

4.1构造方法概述

作用:创建对象

功能:完成对象的初始化

格式: 修饰符 类名(参数){ }

修饰符一般用public

4.2构造方法的注意事项

1.当没有自定义构造方法时,系统会给出一个无参的构造方法

2.当给出构造方法时,无参构造方法就会消失

3.如果给出了有参的构造方法,如果需要无参构造方法需要自己定义

4.无论是否使用,都手动写一个无参构造方法

4.3标准类的制作

1. 成员变量 使用private修饰

2. 构造方法 提供一个无参的构造方法 提供一个带多个参数的构造方法 3. 成员方法 提供每一个成员变量对应的setxxx()/getxxx()方法 提供一个显示对象信息的show()
4. 创建对象并为其成员变量赋值的两种方式 无参构造方法创建对象后使用setxxx()赋值 使用带参构造方法直接创建带有属性值的对象

/*
      学生类
*/
public class student {
     //成员变量
    private int age;
    private int weight;
    private String name;
    private String classroom;

    //构造方法
    public student(){

    }
    public  student(int age,int weight,String name,String classroom){
        this.age=age;
        this.weight=weight;
        this.name=name;
        this.classroom=classroom;
    }

    //成员方法setxxx()修改变量值
    public void setAge(int age){
        this.age=age;
    }
    public void setName(String name){
        this.name=name;
    }
    public void setWeight(int weight){
        this.weight=weight;
    }
    public void setClassroom(String classroom){
        this.classroom=classroom;
    }
    //成员方法getxxx()获取变量值
    public int getAge(){
        return age;
    }
    public String getName(){
        return name;
    }
    public int getWeight(){
        return weight;
    }
    public String getClassroom(){
        return classroom;
    }
    //创建一个show()方法
    public void show(){
        System.out.println(name+","+age+","+weight+","+classroom);
    }



}
/*
     学生测试类
*/
public class studentTest {
    public static void main(String[] args) {
        //创建对象
        student s1=new student();
        student s2 =new student(30,60,"小白","三年六班");

        //给无参对象赋值
        s1.setAge(30);
        s1.setName("小刚");
        s1.setWeight(80);
        s1.setClassroom("三年二班");
        //调用show()方法
        s1.show();
        s2.show();
    }



}

上一篇:Java之对象克隆


下一篇:GraphQL:面对复杂类型