Erro no meu codigo java

import java.util.Scanner;


interface Forma {
    float getArea();
    float getPerimetro();

    String toString();


    class Retangulo implements Forma {
      float comprimento;
      float altura;
      float getArea;
      float getPerimetro;

        public float setComprinento() {
            this.comprimento = comprimento;
        }

        public float setAltura() {
            this.altura = altura;
        }

        public float getArea() {
            return comprimento * altura;
        }

        public float getPerimetro() {
            return ((comprimento * 2) + (altura * 2));
        }
        public String toString() {
            return "tipo:retangulo,altura:" + this.altura + ",comprimento:" + this.comprimento + ",area:" + this.getArea + ",perimetro" + this.getPerimetro;
        }
    }

    class Quadrado implements Forma {
        float comprimento;
        float getArea;
        float getPerimetro;

        public float setComprinento() {
            return this.comprimento;
        }

        public float getArea() {
            return (comprimento * comprimento);
        }

        public float getPerimetro() {
            return comprimento * 4;
        }
    }

   class Circulo implements Forma {
        public float raio, getArea, getPerimetro;

        Circulo(float raio) {
            this.setRaio();
            this.getArea();
            this.getPerimetro();
        }

        public void setRaio(float raio) {
            this.raio = raio;
            this.getArea();
            this.getPerimetro();
        }

        public float getRaio() {
            return this.raio;
        }

        public String toString() {
            return "tipo:circulo,raio:" + this.raio + ",area:" + this.getArea + ",perimetro" + this.getPerimetro;
        }


        private void getArea() {
            this.getArea = (float) (Math.PI * Math.pow(this.raio, 2));
        }

        private void getPerimetro() {
            this.getPerimetro = (float) (2 * Math.PI * this.raio);
        }
    }


    public class Solution {
        private static final Scanner INPUT_READER = new Scanner(System.in);

        public static void main(String[] args) {
            String[] input = INPUT_READER.nextLine().split(" ");
            String tipo = input[0];
            float comprimento = Float.parseFloat(input[1]);
            float largura = 0;

            System.out.println("====================================");
            Forma forma = null;
            switch (tipo) {
                case "R": {
                    largura = Float.parseFloat(input[2]);
                    forma = new Retangulo(comprimento, largura);
                    System.out.println("Encontrando área e perímetro do Retângulo");
                    break;
                }
                case "Q": {
                    forma = new Quadrado(comprimento);
                    System.out.println("Encontrando área e perímetro do Quadrado");
                    break;
                }
                case "C": {
                    forma = new Circulo(comprimento);
                    System.out.println("Encontrando área e perímetro do Círculo");
                    break;
                }
            }
            System.out.println("====================================");

            System.out.println("Área = " + forma.getArea() + " e Perímetro = " + forma.getPerimetro() + "\n");

            System.out.println("=========================");
            System.out.println("Imprimindo como String");
            System.out.println("=========================");

            System.out.println(forma.toString());
        }
    }
}

Não precisa desses atributos

Nome do método está errado e está faltando o parâmetro

Também está faltando o parâmetro

Não está passando o parâmetro pro método

Porque declarou Retangulo, Quadrado e Círculo dentro da interface Forma?