1. 什么是面向对象

  • 对象: 将零散的数据整合起来成为一个整体, 这个整体即对象, 即把相关数据方法组织为一个整体来看待

  • 面向对象: 利用对象进行软件开发

  • JavaBean类: 用来描述一类事物的(属性/行为)


2. 类和对象

2.1 类的定义

类的组成是由属性行为两部分组成

  • 属性: 在类中通过成员变量来体现(类中方法外的变量)

  • 行为: 在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)

类的定义步骤:

①定义类

②编写类的成员变量

③编写类的成员方法

public class 类名 {  
    // 成员变量  
    变量1的数据类型 变量1;  
    变量2的数据类型 变量2;// 成员方法  
    方法1;  
    方法2;      
}

2.2 对象的使用

  • 创建对象的格式:

    • 类名 对象名 = new 类名();
  • 调用成员的格式:

    • 对象名.成员变量

    • 对象名.成员方法();

创建对象  
        格式:类名 对象名 = new 类名();  
        范例:Phone p = new Phone();  
​  
    使用对象  
        1:使用成员变量  
            格式:对象名.变量名  
            范例:p.brand  
        2:使用成员方法  
            格式:对象名.方法名()  
            范例:p.call()  

3. 面向对象的小细节

  1. 描述一类事物的类叫JavaBean类
  2. 带有main方法的类叫测试类
  3. JavaBean类可以写属性和行为

4. 面向对象中的数据安全问题

4.1 privat关键字

private -> 私有

  • 权限修饰符, 可以修饰成员变量和成员方法

  • 特点: 被privat修饰后, 只能在本类中才能访问, 外界无法访问

  1. 私有化成员变量
  2. 每个变量都要有set(设置)/get(得值) 方法,用public修饰

4.2 this关键字

  • this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)

    • 方法的形参如果与成员变量同名,不带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 void show() {  
        System.out.println(name + "," + age);  
    }  
}
  • 就近原则: 在方法中直接使用变量查找顺序, 先找局部变量, 再找成员变量

5. 构造方法

构造方法是一种特殊的方法

  • 作用:创建对象 Student stu = new Student();

  • 格式:

    public class 类名{

    修饰符 类名( 参数 ) {

    }

    }

  • 功能:主要是完成对象数据的初始化

特点:

  1. 方法名与类名相同, 大小写也一致
  2. 没有返回值类型, void也没有
  3. 没有具体返回值(不能用return带回数据结果)

执行时机:

  1. 创建对象的时候由虚拟机调用, 不能手动调用构造方法
  2. 每创建一次对象, 就会调用一次构造方法

eg:

package oop.ooptext6;  
  
public class Student {  
    //属性: 姓名, 年龄, 性别, 身高  
    private String name;  
    private int age;  
    private String gender;  
    private double height;  
  
    //构造方法  
    //习惯: 1.空参  2. 带全部参数的构造方法  
    public Student() {  
        System.out.println("空参构造方法被调用");  
    }  
    public Student(String name, int age, String gender, double height) {  
        this.name = name;  
        this.age = age;  
        this.gender = gender;  
        this.height = height;  
        System.out.println("带全部参数的构造方法被调用");  
    }  
  
}
package oop.ooptext6;  
  
public class Text {  
    public static void main(String[] args) {  
        //创建对象  
        Student s = new Student("张三", 23, "男", 175);  
  
    }  
}
构造方法的注意事项
  1. 若无定义构造方法, 系统将给出一个默认无参数构造方法
  2. 若写了任意构造方法, 系统将不再提供默认的构造方法
  3. 带参数的构造方法与无参数构造方法, 方法名相同, 但参数不同, 这便是构造方法的重载
  4. 习惯: 无论使用与否, 都将手动书写无参数的构造方法, 和带全部参数的构造方法

6. 总结

public class 类名{
	私有化变量
	无参构造
	带全部参数的构造
	get/set方法
	...
}

tip: 自动生成构造方法/set/get

快捷键: Alt+insert / Alt+Fn+Del
在这里插入图片描述

eg:

package oop.opptext10;  
  
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;  
    }  
  
    //行为: 学习, 吃饭, 睡觉  
    public void study(){  
        System.out.println(name+"在学习");  
    }  
    public void eat(){  
        System.out.println(name+"在吃饭");  
    }  
    public void sleep(){  
        System.out.println(name+"在睡觉");  
    }  
  
  
}
package oop.opptext10;  
  
public class Text {  
    public static void main(String[] args) {  
        Student s = new Student("张三", 18);  
        s.study();  
        s.eat();  
        s.sleep();  
    }  
}

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐