Абстрактный класс имеет переменную и класс method.A расширяет абстрактный класс следующим образом:Аннотация Переменные класса и наследование
abstract class shape
{
int area;
void printArea(){System.out.println("Area = "+area);}
}
class circle extends shape
{
int r;
circle(int a){r = a;}
area=r*r;//line 22
}
public class Abstraction{
public static void main(String[] args) {
circle c=new circle(10);
c.printArea();
}
}
Line 22 дает компиляцию error.But, если эта строка перемещается в конструктор класса компилирует
class circle extends shape
{
int r;
circle(int a){r = a;area=r*r;}
}
Что такое поведение?
Это действительно га s не имеет ничего общего с абстрактными классами. Проблема в том, что синтаксис Java требует, чтобы вы заключили назначения в переменные, объявленные в другом месте ('area' в вашем случае) в телах метода (или конструктора) или внутри статических блоков инициализатора. –
@MickMnemonic Но унаследованная переменная может быть непосредственно использована в производном классе. Не так ли? – Pradeep
@Pradeep да, и вы используете его .. в функции конструктора –