关于对象同时继承父类和实现接口问题 不知怎么同时访问对象父类中属性和实现接口中方法


public class Javahomeworkday21 {
    public static void main(String[] args) {

      InsertDrawable mouse = new Mouse();
        Computer computer = new Computer(mouse);
        mouse.connect();
        mouse.setColor("红色");//这里想用mouse.color进行对mouse对象的color赋值 但是报错  下面Mouse中的tostring方法能用getColor  


        System.out.println(mouse);

    }
}
class Computer {
   private InsertDrawable insertDrawable;
      private String color;


    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public Computer() {
    }


    public Computer(InsertDrawable  insertDrawable) {
        this.insertDrawable = insertDrawable;
    }


    public InsertDrawable getInsertDrawable() {
        return insertDrawable;
    }

    public void setInsertDrawable(InsertDrawable insertDrawable) {
        this.insertDrawable = insertDrawable;
    }

}
interface InsertDrawable{
    void connect();
}
class Mouse extends Computer implements InsertDrawable{


    public void connect() {
        System.out.println("鼠标已连接");

    }

    @Override
    public String toString() {
        return "Mouse{" +
                "color='" +getColor() + '\'' +
                '}';
    }
}
class Mey extends Computer implements InsertDrawable{
    @Override
    public void connect() {
        System.out.println("键盘已连接");

    }
}
class Xinashiqi extends Computer implements InsertDrawable{
    @Override
    public void connect() {
        System.out.println("显示器已连接");
    }
}
class Dayinji extends Computer implements InsertDrawable{
    @Override
    public void connect() {
        System.out.println("打印机已连接");
    }
}

img

img

这里面哪来的 Color;

computer.setColor("红色");

给你改了一下


 
public class Javahomeworkday21 {
    public static void main(String[] args) {
 
      InsertDrawable mouse = new Mouse();
        Computer computer = new Computer(mouse);
        mouse.connect();
        computer .setColor("红色");//这里想用mouse.color进行对mouse对象的color赋值 但是报错  下面Mouse中的tostring方法能用getColor  
 
 
        System.out.println(mouse);
 
    }
}
class Computer {
   private InsertDrawable insertDrawable;
      private String color;
 
 
    public String getColor() {
        return color;
    }
 
    public void setColor(String color) {
        this.color = color;
    }
 
    public Computer() {
    }
 
 
    public Computer(InsertDrawable  insertDrawable) {
        this.insertDrawable = insertDrawable;
    }
 
 
    public InsertDrawable getInsertDrawable() {
        return insertDrawable;
    }
 
    public void setInsertDrawable(InsertDrawable insertDrawable) {
        this.insertDrawable = insertDrawable;
    }
 
}
interface InsertDrawable{
    void connect();
}
class Mouse extends Computer implements InsertDrawable{
 
 
    public void connect() {
        System.out.println("鼠标已连接");
 
    }
 
    @Override
    public String toString() {
        return "Mouse{" +
                "color='" +getColor() + '\'' +
                '}';
    }
}
class Mey extends Computer implements InsertDrawable{
    @Override
    public void connect() {
        System.out.println("键盘已连接");
 
    }
}
class Xinashiqi extends Computer implements InsertDrawable{
    @Override
    public void connect() {
        System.out.println("显示器已连接");
    }
}
class Dayinji extends Computer implements InsertDrawable{
    @Override
    public void connect() {
        System.out.println("打印机已连接");
    }
}

Mouse mouse = new Mouse(); // 这样就能调用setColor方法了
InsertDrawable mouse = new Mouse(); // 这个样子是说用Mouse实例创建InsertDrawable对象,所以本质上是InsertDrawable对象,所以只能调用InsertDrawable里的属性和方法
(Mouse)mouse.setColor() // 你想直接用要把类型强转成有setColor方法的类型,才能调用setColor方法