Java入门(六)

面向对象

面向对象思想: 这是一种符合我们思考习惯的思想,可以将复杂的事情简单化,让我们从执行者变成了指挥者

类是一个模版,对象就是模版做出来的东西,比如类是学生,对象是张三

类由成员变量成员方法组成

成员变量:和之前学习的变量是一样的,但有两个小区别:一、他的位置在类中,方法外 二、成员变量不需要初始化值也可以使用,因为有默认值

成员方法:和之前不一样的是去掉了修饰符中的static关键字

学生类的例子

public class Student {
    String name;
    int age;
    public void study(){
        System.out.println("Study");
    }
    public void eat(){
        System.out.println("Eat");
    }
}

创建对象

类名 对象名 = new 类名()

示例

class hello {
    public static void main(String[] args) {
        Student st = new Student();
        st.age = 30;
        System.out.println(st.age);
        st.eat();
    }
}

一个对象的内存图

两个对象的内存图

两个引用指向同一个对象

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

  1. 成员变量在类中,方法外;局部变量在方法中或者方法申明上(形式参数)
  2. 在内存中位置不同:成员变量在堆内存,局部变量在占内内存
  3. 生命周期不同:成员变量随着对象的创建而存在,消失而消失;局部变量随着方法的调用而存在,随着方法的调用完毕而消失
  4. 初始化值的不同:成员变量有默认值;局部变量没有默认值必须先定义赋值,然后使用

Private关键字

是一个修饰符,可以修饰成员变量和成员函数,只能在本类中被访问

案例:

public class Student {
    String name;
    private int age;
    
    public void age(int a){
        age = a;
        System.out.println(age);
    }
}

Private修饰后的标准类代码

public class Student {
    private String name;
    private int age;

    public void setName(String n){
        name = n;
    }

    public String getName(){
        return name;
    }

    public void setAge(int a){
        age = a;
    }

    public int getAge(){
        return age;
    }
    
}

封装

把不需要对外提供的内容隐藏起来,把属性隐藏,提供公共方法对其访问

好处:通过方法来控制成员变量的操作,提高代码的安全性

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

this关键字

为了代码见名知义

如果局部变量名称和成员变量名一致,计算机采用就近原则

this解决成员变量被隐藏的问题

public class Student {
    private String name;
    private int age;

    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return name;
    }

    public void setAge(int age){
        this.age = age;
    }

    public int getAge(){
        return age;
    }

}

构造方法

用于给对象数据初始化

public class Student {
    public Student(){
        System.out.print("construction");
    }
}

如果给出了构造方法,系统将不会提供默认的构造方法,这时候就需要我们自己写无参构造

构造方法也是可以重载的

public class Student {
    private String name;
    private int age;

    public Student(){

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

标准的学生类案例:

public class Student {
    //成员变量
    private String name;
    private int age;
    //构造方法
    public Student(){
    }

    public Student(String name, int age){
        this.age = age;
        this.name = name;
    }
    //成员方法
    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return name;
    }

    public void setAge(int age){
        this.age = age;
    }

    public int getAge(){
        return age;
    }
}

猜你喜欢

转载自blog.csdn.net/fang19970714/article/details/114242558