Здравствуйте подскажите как реализуются статические методы в фукциональном, прототипном наследовании и с помощью класов в ES6? и чем отличается статический от приватного методы?
к примеру у меня есть код:
function Animal(name, age, gender, height, weight) {
	let height = height;
	let weight = weight;
	this.name = name;
	this.age = age;
	this.gender = gender;
	this.run = function(){
		console.log('I\'m runing');
	}
	this.getName = function(){
		return this.name;
	};
	this.setName = function(newName){
		this.name = newName;
	}
	this.getAge = function(){
		return this.age;
	};
	this.setAge = function(newAge){
		this.age = newAge;
	}
	function greet(){
		console.log('Hello! I\'m animal');
	}
}
function Mammal (name, age, gender, kind){
	Animal.call(this);
	this.kind = kind;
	this.eat = function(){
		console.log('I\'m runing');
	}
	function greet(){
		console.log(`Hello! I'm mammal. My name ${name}, age ${age}, gender ${gender}, kind ${kind}`);
	}
}
нужно сделать метод greet статичным у Animal и Mammal