• 类的五大成分(Java)


    类中有且仅有5大成分(五大金刚)

    • 成员变量Field:描述类或者对象的属性信息的。
    • 成员方法Method:描述类或者对象的行为的。
    • 构造器(构造方法,Constructor): 初始化类的一个对象返回。
    • 代码块:代码块按照有无static可以分为静态代码块和实例代码块。
    • 内部类:将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。

    1. 成员变量Field

    在Java中对象的属性称为成员变量。为了了解成员变量,在下面的代码中首先定义一个图书类,成员变量对应于类对象的属性,在Book类中设置3个成员变量,分别为id,name和category,分别对应于图书编号,图书名称和图书类别3个图书属性。

    public class Book{
     private String name;    //定义一个String类型的成员变量
     public String getName(){  //定义一个getName()方法
       int id=0;               //局部变量
       setName=("java");       //调用类中其他方法
       return id+this.name;  //设置方法返回值
       }
       public void setName(String name){   //定义一个setName()方法
         this.name=name;         //将参数赋值于类中的成员变量
         }
       public Book getBook(){
         return this;          //返回Book类引用
         }
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    成员变量可以设置初始值,也可以不设置,如果不设置初始值,则会有默认值。

    2. 成员方法Method

    在Java语言中使用成员方法对应于类对象的行为。以上面代码中Book类为例,它包含getName()和setName()两个方法。

    一个成员方法可以有参数,这个参数可以是对象,也可以是基本数据类型的变量。同时成员方法有返回值和不返回任何值的选择,如果需要返回值,可以在方法体中使用return关键字,返回值可以是计算结果,也可以是其他想要的数值和对象,无返回值可以使用void关键字表示。

    在成员方法中可以调用其他成员方法和类成员变量,例如上述代码中getName()方法中就调用了setName()方法将图书名称赋予一个值。

    注:关于权限修饰符

    如果一个类的成员变量或成员方法被修饰为private,则只能在本类中使用,在子类中不可使用,并且在其他包的类中是不可见的。如果被修饰为public,则在子类和其他包的类中可以使用。

    3. 构造器(构造方法,Constructor)

    3.1 构造器的作用

    通过调用构造器可以返回一个类的对象,构造器同时负责帮我们把对象的数据(属性和行为等信息)初始化好。

    3.2 构造器的格式

    修饰符 类名(形参列表) {
        // 构造体代码,执行代码
    }
    
    • 1
    • 2
    • 3

    3.3 构造器应用

    首先定义一个学生类,代码如下:

    public class Student {
        // 1.成员变量
        public String name;
        public int age;
    
        // 2.构造器
        public Student() {
    		System.out.println("无参数构造器被调用")}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    接下来通过调用构造器得到两个学生对象。

    public class CreateStu02 {
        public static void main(String[] args) {
            // 创建一个学生对象
            // 类名 变量名称 = new 类名();
            Student s1 = new Student();
            // 使用对象访问成员变量,赋值
            s1.name = "张三";
            s1.age = 20 ;
    
            // 使用对象访问成员变量 输出值
            System.out.println(s1.name);
            System.out.println(s1.age); 
    
            Student s2 = new Student();
            // 使用对象访问成员变量 赋值
            s2.name = "李四";
            s2.age = 18 ;
            System.out.println(s2.name);
            System.out.println(s2.age);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    4. 代码块

    4.1 静态代码块

    静态代码块
    ​ 必须有static修饰,必须放在类下。与类一起加载执行。

    格式

    static{
         // 执行代码
    }
    
    • 1
    • 2
    • 3

    特点

    • 每次执行类,加载类的时候都会先执行静态代码块一次。
    • 静态代码块是自动触发执行的,只要程序启动静态代码块就会先执行一次。
    • 作用:在启动程序之前可以做资源的初始化,一般用于初始化静态资源。

    案例演示

    public class DaimaKuaiDemo01 {
        public static String name ;
    
        // 1.静态代码块
        static {
            // 初始化静态资源
            name = "张三";
            System.out.println("静态代码块执行!");
        }
    
        public static void main(String[] args) {
            System.out.println("main方法执行");
            System.out.println(name);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    4.2 实例代码块

    实例代码块
    ​ 没有static修饰,必须放在类下。与对象初始化一起加载。

    格式

    {
         // 执行代码
    }
    
    • 1
    • 2
    • 3

    特点

    • 无static修饰。属于对象,与对象的创建一起执行的。
    • 每次调用构造器初始化对象,实例代码块都要自动触发执行一次。
    • 实例代码块实际上是提取到每一个构造器中去执行的。
    • 作用:实例代码块用于初始化对象的资源。

    案例演示

    public class DaimaKuaiDemo02 {
       
        private String name ;
    
        // 实例代码块。 无static修饰。
        {
            System.out.println("实例代码块执行");
            name = "dl";
        }
    
        // 构造器
        public DaimaKuaiDemo02(){
            //System.out.println("实例代码块执行");
        }
    
        // 有参数构造器
        public DaimaKuaiDemo02(String name){
            //System.out.println("实例代码块执行");
        }
    
        public static void main(String[] args) {
            // 匿名对象,创建出来没有给变量。
            new DaimaKuaiDemo02();
            new DaimaKuaiDemo02();
            new DaimaKuaiDemo02("xulei");
        }
    }
    // 输出三次:实例代码块执行
    
    • 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

    5. 内部类

    请看这一节Java内部类详解

  • 相关阅读:
    Python 在 JMeter 中如何使用?
    基于Simulink的用于电力系统动态分析
    一个获取当前登录机器IP的工具类
    宝塔环境PHP网站要配置HTTPS,SSL证书如何申请
    微服务学习|Gateway网关:网关作用、快速入门、路由断言工厂、路由过滤器配置、全局过滤器、过滤器执行顺序、跨域问题处理
    对于Mac OS10.1x合适安装的Typora版本合集
    PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化实践技术应用
    Day17:C++ WITH Easyx
    scrapy框架——架构介绍、安装、项目创建、目录介绍、使用、持久化方案、集成selenium、去重规则源码分析、布隆过滤器使用、redis实现分布式爬虫
    浅谈云原生
  • 原文地址:https://blog.csdn.net/yangdingyu/article/details/126306308