adding weapons

I am having some trouble with my new class called Itembase its for adding gear to my game

[System.Serializable]
public class Itembase
{
	public string name;
	public int itemid;
	public int baseprice;
	
	
}
[System.Serializable]
public class weapon : Itembase
{
	public bool isranged;
	public element weaponelement;
	public int damage;
	public Player equip;
	
	public weapon(string name,int itemid,int baseprice,bool isranged,element weaponelement,int damage,Player equip)
	{
		super.name = name;
		super.itemid = itemid;
		super.baseprice = baseprice;
		this.isranged = isranged;
		this.weaponelement = weaponelement;
		this.damage = damage;
		this.equip = equip;
		
		
	}
}

enum element
{
	Physical,
	Fire,
	Ice,
	Lightning,
	Earth
}

this is from my playerstats:

	public PlayerStats(Player player,int level, string name, int STR, int DEX, int DEF, int vital, int Magic, int luck, int speed, int Agility, int exp)

    {
		this.player = player;
        this.level = 1;
        this.name = name;
        this.STR = STR;
        this.DEF = DEF;
        this.vital = vital;
        this.Magic = Magic;
        this.luck = luck;
        this.Speed = speed;
        this.Agility = Agility;
        this.DEX = DEX;
        addexp(exp);

    }

tell me what I am doing wrong this is what the error is:
Inconsistent accessibility: field type Player' is less accessible than field PlayerStats.player’

Your Player class definition is less accessible then what you set for the field(you set to public) player in your PlayerStats script.

Most likely, the most simple way of fixing it is to go and put public in the class definition of Player as the access modifier, you may not have one and it is using the default of internal

If you don’t own or have access to the player class… it may be internal as that is the default when you don’t specify the access modifier of a class(this differs for fields and properties/methods).

When you use access modifiers on classes, when you go to use it whether you are defining a field or a property, you must ensure you don’t make the field or property (or class if you are extending/inheriting/deriving) more accessible then the type etc.

MSDN Documentation on access modifiers.