language · language ·

Fields, properties, and visibility

Members can be public, internal, protected, or private, with static, readonly, init, and get/set/init property shapes.

cpudatagetinitinternallanguageprivateprotectedpublicreadonlysetstaticyeho

Use fields for direct data. Use a property when read or write policy is part of the object's contract and you accept its experimental status.

public Type field
readonly Type field
Type property { get; set; }
Type property { get; init; }

Status: experimental

Complete program

Model a player profile with explicit member access and property shapes. This class example uses the CPU oracle.

cpu · language · type checked

class Profile
{
    public text displayName = "Nova"
    private int secret = 7
    protected int rank = 1
    internal int region = 2
    readonly text id = "player-1"
    int level { get; set; }
    text createdBy { get; init; }
}
Profile player = Profile()
player.level = 3
Console.Log(player.displayName)
Console.Log(Text.From(player.level))
project.mech
manifestVersion = "2"
package = "api.example.language__fields_properties_visibility"
version = "0.1.0"
languageEdition = "yeho-core-2026.1"

[app]
kind = "headless"
Notes and source

Properties require get and cannot combine set with init.

Computed property bodies are unavailable; current properties describe access shape.

yeho/parser_declarations.cpp parseThingMemberModifiers and parseThingPropertyAccessors; conformance properties