Java面向对象 封装!

面向对象(封装)

面向对象思想:

  • 面向对象是基于面向过程的编程思想。
    • 面向过程:强调每一个功能的步骤
    • 面向对象:强调的是对象,然后用对象去调用功能
  • 特点
    • A:符合我们思考习惯的思想
    • B:可以将复杂的事情简单化
    • C:执行者—-指挥者

类和对象

A:属性 —- 就是事物的描述信息

B:行为 —- 事物能够做什么

类:一组相关属性和行为的集合

对象: 就是该事物的具体体现

  • 成员变量
    • 位置: 类中,方法外
    • 初始化值:不需要
  • 成员方法
    • 去掉static 关键字

Phone

package myTest;

/**
 * Created by JackFeng on 2020/3/2.
 */
public class Phone {


    String barnd;
    int price;
    String color;


    public void call(String name) {
        System.out.println("给" + name + "打电话");
    }

    public void sendMessage(){
        System.out.println("给所有人群发短信");
    }


}

PhoneDemo

package myTest;

/**
 * Created by JackFeng on 2020/3/2.
 */
public class PhoneDemo {

    public static void main(String[] args) {

        Phone p = new Phone();

        System.out.println(p.barnd + "---" +p.price+ "----"+p.color);
        p.barnd = "iphone";
        p.price = 8888;
        p.color = "金色";
        System.out.println(p.barnd + "---" +p.price+ "----"+p.color);

        p.call("DataScience");
        p.sendMessage();
    }

}


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

区别:

  • A: 在类中的位置不同
    • 成员变量:类中,方法外
    • 局部变量:方法中或者方法声明上(形式参数)
  • B:在内存中的位置不同
    • 成员变量:堆内存
    • 局部变量:栈内存
  • C:生命周期不同
    • 成员变量:随着对象的创建而存在,随着对象的消失而消失
    • 局部变量:随着方法的调用而存在,随着方法调用完毕而消失
  • D:初始化值的问题
    • 成员变量:有默认值
    • 局部变量:没有默认值,必须先定义,赋值,最后使用
package myTest;

/**
 * Created by JackFeng on 2020/3/2.
 */
public class Variable {

    // 成员变量
    int x;

    public void show (){
        //局部变量
//        int y;        // 如果y 没有值 就会报错    

        int y = 1; // 赋值就会不报错
        System.out.println(y);

        // 调用x 有默认值
        System.out.println(x);
    }
}

标准学生类代码

package myTest;

/**
 * Created by JackFeng on 2020/3/2.
 */
public class StudentDemo {
    public static void main(String[] args) {

//        无参 + set方法
        Student s = new Student();
        s.setName("Data");
        s.setAge(26);
        System.out.println(s.getName()+"===="+s.getAge());


        // 带参构造
        Student s2 = new Student("DataScinece", 26);
        System.out.println(s2.getName()+"===="+s2.getAge());



    }

}

学生类

package myTest;

/**
 * Created by JackFeng on 2020/3/2.
 */
public class Student {
    private String name;
    private int age;

    // 构造方法
    // 无参数
    public Student(){}

    // 有参数
    public  Student(String name, int age ){
        this.name = name;
        this.age = age;
    }




    // get set 方法
    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;
    }
}

类名

如果类名作为形式参数传递

  • 要的是该类的对象

如果类名作为返回值类型

  • 返回的是该类的对象

评论