java:Pixel类(Point的子类),表示屏幕上的像素

初学真是难guo
设计一个Pixel类(Point的子类),表示屏幕上的像素,为该类提供一个作为程序执行入口的main方法,测试整个application的正确性。

代码生成.class后,总是显示错误为
Exception in thread "main" java.lang.NullPointerException
at Pixel.main(Point.java:37)

class Point{
int width;
int length;
public void setpoint(int x,int y){
width=x;
length=y;}
public void clear(){
width=0;
length=0;}}

class Color{
int red,green,blue;
void bianse(){}
void bianse(int red,int green,int blue){
this.red=red;
this.green=green;
this.blue=blue;}
public void StringtoString(){
System.out.println("red="+red+"green="+green+";blue="+blue);
}}

class Pixel extends Point{
Color color;
public void clear(){
super.clear();//继承并延展
color=null;}
static public void main(String args[]){ //main
Pixel p1=new Pixel();
p1.clear();
p1.color.bianse(255,0,0);
p1.setpoint(3,3);
System.out.println(p1.width+"*"+p1.length);

p1.color.StringtoString(); }}

2个回答

class Pixel extends Point{
Color color;
public void clear(){
super.clear();//继承并延展
color=null;}
这里的 color 没有初始化,也没有构造函数,也没有被设置

p1.color.bianse(255,0,0);
这显然就是null错误了。

改法有很多,比如
public void clear(){
super.clear();//继承并延展
color=null;}
修改为
public void clear(){
super.clear();//继承并延展
color=new Color();}

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复_reid: 问题解决请点下我回答下面的采纳
8 个月之前 回复
qq_43739564
_reid 谢谢!=null抄得书 我去看看
8 个月之前 回复

java的变量都是初始化为null的,不像c一样会初始化一个对象,所以java定义对象都要写new。你的程序在声明Pixel的私有变量时就可以写new。

class Pixel extends Point{
    Color color = new Color();

其次你的 color = null 语句很危险,因为后续没有对应的赋值语句,尽管你现在的代码用不到,但最好加上。

JonathanYan
JonathanYan 回复_reid: 最好写一个setColor的函数,把color设置到默认值。
8 个月之前 回复
JonathanYan
JonathanYan 回复_reid: 那就没啥问题,我说危险不是赋值null,而是你后面没有重新给他赋值新的变量
8 个月之前 回复
qq_43739564
_reid 谢谢~null是抄的书
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐