关于Java中graphics不能实例化的理解
panit(Graphicsg)中Graphicsg是什么意思?Graphics不是抽象类吗,Graphicsg算是实例化吗?...
panit(Graphics g)中Graphics g是什么意思?Graphics不是抽象类吗,Graphics g算是实例化吗?
展开
2个回答
展开全部
public abstract class Graphicsextends Object Graphics 类是所有图形上下文的抽象基类,允许应用程序可 以在组件(已经在各种设备上实现),以及闭屏图像上,进行绘制。
你说的g是一个Graphics类型的参数,panit方法接受一个Graphics类型的参数。
抽象类是不能直接实例化的,但是可以被继承,继承Graphics类的类可以是一个普通类型的类,继承Graphics的类可以向上转型成Graphics类型,所以,你上面提到的,Graphics确实是抽象类,但是g是Graphics类型的参数。
这是我写的一个程序你看看:
abstract class TestExtends {
public void f(){
System.out.println("f()");
}
abstract void p();
}
class Realization extends TestExtends{
@Override
void p() {
// TODO Auto-generated method stub
System.out.println("p()");
}
}
public class Test {
public void go(TestExtends te){
te.f();
te.p();
}
public static void main(String args[]) {
TestExtends te = new Realization();
Test test = new Test();
test.go(te);
}
}
你说的g是一个Graphics类型的参数,panit方法接受一个Graphics类型的参数。
抽象类是不能直接实例化的,但是可以被继承,继承Graphics类的类可以是一个普通类型的类,继承Graphics的类可以向上转型成Graphics类型,所以,你上面提到的,Graphics确实是抽象类,但是g是Graphics类型的参数。
这是我写的一个程序你看看:
abstract class TestExtends {
public void f(){
System.out.println("f()");
}
abstract void p();
}
class Realization extends TestExtends{
@Override
void p() {
// TODO Auto-generated method stub
System.out.println("p()");
}
}
public class Test {
public void go(TestExtends te){
te.f();
te.p();
}
public static void main(String args[]) {
TestExtends te = new Realization();
Test test = new Test();
test.go(te);
}
}
更多追问追答
追问
g 没有被实例化也可以当成参数传递吗?
追答
在定义一个方法的时候里面的形式参数是不用实例化的,但是当你在main函数里调用这个方法的时候,传递的实际参数就必须是一个已经实例化了的对象。
比如public void go(TestExtends te){
te.f();
te.p();
}这个方法里面的TestExtends te,te只是一个形式参数,不用实例化。然而在public static void main(String args[]) {
TestExtends te = new Realization();
Test test = new Test();
test.go(te);
}
在main函数里面,TestExtends te = new Realization();这句话就是实例化。然后在把te传到go方法中,test.go(te);
现在你明白了吗?
2014-06-30
展开全部
这里的g应该是形参吧,Graphics是抽象类,抽象类是不能实例化的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询