• 【Java 2 】Java 类的封装与使用


    一 类的定义与使用

    1.1、类的组成是由属性和行为两部分组成
    • 属性:在类中通过成员变量来体现(类中方法外的变量)
    • 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
    1.2、类的定义步骤

    ①定义类
    ②编写类的成员变量
    ③编写类的成员方法

    public class 类名 {
    	// 成员变量
    	变量1的数据类型 变量1;
    	变量2的数据类型 变量2;// 成员方法
    	方法1;
    	方法2;	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    public class Phone {
        //成员变量
        String brand;
        int price;
    
        //成员方法
        public void call() {
            System.out.println("打电话");
        }
    
        public void sendMessage() {
            System.out.println("发短信");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    1.3、类的使用
    /*
        创建对象
            格式:类名 对象名 = new 类名();
            范例:Phone p = new Phone();
    
        使用对象
            1:使用成员变量
                格式:对象名.变量名
                范例:p.brand
            2:使用成员方法
                格式:对象名.方法名()
                范例:p.call()
     */
    public class PhoneDemo {
        public static void main(String[] args) {
            //创建对象
            Phone p = new Phone();
    
            //使用成员变量
            System.out.println(p.brand);
    
            p.brand = "小米";
            p.price = 2999;
    
            System.out.println(p.brand);
            System.out.println(p.price);
    
            //使用成员方法
            p.call();
            p.sendMessage();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    二、类的关键字:private

    直接访问类的成员变量是有风险的,因为赋值的类型不一定符号成员变量定义时的变量类型;
    所以,在定义class时,可以使用关键字private;
    private是一个修饰符,可以用来修饰成员(成员变量,成员方法)

    • 被private修饰的成员,只能在本类进行访问,针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作
      • 提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰
      • 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰
      /*
          学生类
       */
      class Student {
          //成员变量
          String name;
          private int age;
      
          //提供get/set方法
          public void setAge(int a) {
              if(a<0 || a>120) {
                  System.out.println("你给的年龄有误");
              } else {
                  age = a;
              }
          }
      
          public int getAge() {
              return age;
          }
      
          //成员方法
          public void show() {
              System.out.println(name + "," + age);
          }
      }
      /*
          学生测试类
       */
      public class StudentDemo {
          public static void main(String[] args) {
              //创建对象
              Student s = new Student();
              //给成员变量赋值
              s.name = "林青霞";
              s.setAge(30);
              //调用show方法
              s.show();
          }
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    三、类的关键字:this

    • this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)
      • 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
      • 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
    public class Student {
        private String name;
        private int age;
    
        public void setName(String name) {
            this.name = name;//this.name 指代成员变量,name 指代局部变量
        }
    
        public String getName() {
            return name;
        }
    
        public void setAge(int age) {
            this.age = age;//this.age 指代成员变量,age指代局部变量
        }
    
        public int getAge() {
            return age;
        }
    
        public void show() {
            System.out.println(name + "," + age);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    四、类的构造方法

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

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

    • 格式:

     public class 类名{
    
      ​        修饰符 类名( 参数 ) {}
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 功能:主要是完成对象数据的初始化
    4.1、构造方法的注意事项
    • 构造方法的创建
    如果没有定义构造方法,系统将给出一个默认的无参数构造方法
    如果定义了构造方法,系统将不再提供默认的构造方法
    
    • 1
    • 2
    • 构造方法的重载
    如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法
    
    • 1
    • 推荐的使用方式
    无论是否使用,都手工书写无参数构造方法
    
    • 1
    • 重要功能!
    可以使用带参构造,为成员变量进行初始化
    
    • 1
    /*
        学生类
     */
    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.name = name;
            this.age = age;
        }
    
        public void show() {
            System.out.println(name + "," + age);
        }
    }
    /*
        测试类
     */
    public class StudentDemo {
        public static void main(String[] args) {
            //创建对象
            Student s1 = new Student();//使用无参构造
            s1.show();
    
            //public Student(String name)
            Student s2 = new Student("林青霞");
            s2.show();
    
            //public Student(int age)
            Student s3 = new Student(30);
            s3.show();
    
            //public Student(String name,int age)
            Student s4 = new Student("林青霞",30);
            s4.show();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    4.2、标准类的定义方法

    在这里插入图片描述

  • 相关阅读:
    提升 Apache Hudi Upsert 性能的三个建议
    互联网采集数据有哪几种常见的方法?
    JVM 方法内联
    Modbus CRC
    vue diff 算法学习
    C#语言的由来与发展历程
    《双重冲击》读书笔记
    讲解 CSS 过渡和动画 — transition/animation (很全面)
    Linux vi/vim
    讲讲vue3下会造成响应式丢失的情况
  • 原文地址:https://blog.csdn.net/ak739105231/article/details/125420961