الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة non-static variable this cannot be referenced from a static context

بدأه sosomoon في 11 مارس 2010 · 7 رد · 637 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

طبعاً هذه أول مشاركه لي بالمنتدى الرائع ...الله يوفقك كل من شارك بهذا المنتدى وخدم المسلمين

أنا حاليا أتعلم لغة الجافا بنفسي لكن واجهتني مشكلة وهي أني بعد ماعملت توارث للصفات من الكلاس الأساسي

وبدأت أعمل عليها بالمين واجهتني رسالت خطأ ((non-static variable this cannot be referenced from a static context))

حاولت أمسح كلمة static من الموجوده بتعريف المين واشغل البرنامج لكن تفاجأت البرنامج يظهر رسالة خطأ عدم وجود مين بالبرنامج حاولت

أعرف المتغيرات حقت الكلاس الأساسي إلى static لكن بدون فائدهـ اذا أحد قادر يريني الطريقة الصحيحه وفائدتها أكون شاكر ومقدر له ...وشكراً

الكود:

package javaapplication4;
import javax.swing.*;
import java.util.*;

abstract class Shape {

static double lengthi;
static double width;
static double hight;

 public Shape(){

 }


 Shape(double wid,double hi){
 width = wid;
 hight = hi;

 }


 Shape(double len){

 lengthi = len;
 }
 abstract double area();
 abstract double circelconfranc();

 void restValue(){
 lengthi = -1;
 width = -1;
 hight = -1; 
 }

 public class Rect extends Shape{

 Rect(double wid,double hi){
 super(wid,hi);
 }
 double area(){

 return 2*width*hight;
 }

 double circelconfranc(){

 return 2*width*hight;

 }


 }
 public class Circel extends Shape{
 final double PI = 3.14;

 Circel(double red){
 super(red);
 }
 double area(){
 return 2*lengthi*lengthi ;
 }
 double circelconfranc(){

 return 2*PI*lengthi ;

 }
 }

 public static void main(String[] args) {

 Shape s = new Circel(12);<<<ـــــــــــــــ سطر الخطأ

تم تعديل هذه المشاركة بواسطة herch في 11 مارس 2010 في 16:48

#2

قم بفصل كل فئة/صنف إلى ملف منفصل

#3

ممكن لو توضح أكثر أخوي الطريقه وجزاك الله ألف خير..

#4

non-static variable this cannot be referenced from a static context

معناها, لا يمكن أن تستخدم متغيرات ليست ثابته (static ) من سياق(دوال) ثابته.

#5

طيب كيف أعدل على الكود حتى يصبح صحيح حتى لو حذفت static تبقى نفس المشكله

#6
public class Circel extends Shape{

يجب أن تصبح :

public static class Circel extends Shape{
#7

ٍالملف Shape.java



double lengthi;
double width;
double height;

public Shape() {}

Shape(double wid,double hi) {
width = wid;
height = hi;
}

Shape(double len) {
lengthi = len;
}

public abstract double area();
public abstract double circleconfranc();

void restValue() {
lengthi = -1;
width = -1;
height = -1;
}
}
public abstract class Shape {

الملف Rect.java



public Rect(double wid, double hi){
super(wid,hi);
}
public double area(){
return 2*width*height;
}

public double circleconfranc(){
return 2*width*height;
}
}
public class Rect extends Shape {

الملف Circle.java



final double PI = 3.14;

public Circle(double red){
super(red);
}
public double area(){
return 2*lengthi*lengthi ;
}
public double circleconfranc(){
return 2*PI*lengthi ;
}
}
public class Circle extends Shape {

الملف MainClass.java



public static void main(String[] args) {
Shape s = new Circle(12);
}
}
public class MainClass {

1
#8

أشكركم على المتابعه ولي رجعه إن شالله بأسئلة أخرى لكم جزيل الشكر والعرفان..

مواضيع مشابهة