2013-07-08 5 views
0

Привет Я пытаюсь выполнить этот код в Eclipse.Использование абстрактного класса Java

abstract class ShapeNew { 
    int length; 
    public abstract double area(); 
} 
class Rect extends Shape{ 
    Rect(int side){ 
     this.length = side; 
    } 
    public double area(){ 
     System.out.println("area of rectangle"+ length*length); 
     return length*length; 
    } 



    /** 
    * @param args 
    */ 
public static class Area{ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     ShapeNew rect = new Rect(32);// I am unable to use this. The eclipse throws an error// 

     rect.area(); 
    } 

} 

Может ли кто-нибудь помочь мне с этим. Почему я не могу назначить ссылку ShapeNew объекту Rect.? я получаю эту ошибку

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Type mismatch: cannot convert from Rect to ShapeNew 
+0

Как объясняется в различных ответах, здесь у вас есть тип. Измените форму на ShapeNew (хотя я бы использовал лучшее имя класса). – Atul

ответ

2

Вы должны заменить эту строку:

class Rect extends Shape 

По

class Rect extends ShapeNew 
6

У вас есть опечатка: вы должны простираться от класса вы определили:

class Rect extends ShapeNew {

(Кроме того, оказывается, вы реализовали квадрат, а чем прямоугольник, если ваша функция области квадратична).

2

Я думаю, что это простая опечатка. Ваше абстрактное имя класса - ShapeNew в строке 1, и вы пытаетесь получить новый экземпляр класса Shape. изменить форму, чтобы ShapeNew

0
abstract class ShapeNew { 
    int length; 
    public abstract double area(); 
          } 
    class Rect extends ShapeNew{ 
    Rect(int side){ 
    this.length = side; 
} 
public double area(){ 
    System.out.println("area of rectangle"+ length*length); 
    return length*length; 
} 
} 


public class Area{ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    ShapeNew rect = new Rect(32); 

    rect.area(); 
} 

} 
0

Вы получаете сообщение об ошибке, потому что вы Abstarct класс: ShapeNew и вы унаследовали подкласс от неправильное имя: Shape.

Так что просто измените это имя на ShapeNew.

class Rect extends ShapeNew{ 
Смежные вопросы