当前位置:编程学习 > JAVA >>

关于构造方法的小问题

在学java的时候遇到了个小问题
class TTFrame {
public TTFrame(){
Frame f = new Frame();
f.setBackground(Color.BLACK);
}
}

这样写没问题
class TTFrame {
Frame f = new Frame();
f.setBackground(Color.BLACK);
}

这样f不能调用任何方法

为什么Frame的对象一定要在TTFrame的构造方法中才能调用自己的方法?谢谢各位指教!
--------------------编程问答-------------------- f.setBackground(Color.BLACK)是调用对象的方法,这个只有在方法中才调用。不一定是构造方法,其它方法也可以。但你直接写在类里,没有任何方法这样是不行的 --------------------编程问答-------------------- 你得在方法里面用f.setBackground(Color.BLACK); --------------------编程问答-------------------- 你可以在类内部,方法外部new对象,但是 f.setBackground(Color.BLACK) 是调用方法要在方法体内,要么就把它们放在初始化块中。 --------------------编程问答-------------------- 如果您是语言的设计者,您觉得可以允许这种语法,那么它有什么用呢?它能在什么情况下用呢? --------------------编程问答-------------------- 不一定是在构造函数里,单必须是在一个方法里,不能直接在类中使用。例如:

class TTFrame {
    Frame f = null;
    //构造函数
    public TTFrame(){
        f = new Frame();
    } 
   //一个方法
    void show(){
       f.setBackground(Color.BLACK);
    }
}
--------------------编程问答-------------------- 楼主很喜欢思考吧,我曾经貌似也有过这样的疑问,看到楼上几个的回答,好像都在告诉你这样写是不行的,不知道lz清楚了没,我跟lz分享一点吧:
抓住基本的一点:
在Java语言中,是以类为单位的,类里面包含的成员只有三种:属性,行为(方法),内部类,而这三种可以配有各种修饰符,有权限修饰符,有状态修饰符。
也许有人会说static静态代码块,静态代码块可以归类到行为中。
希望楼主从基本点出发,就不难明白啦,希望楼主学习进步。 --------------------编程问答-------------------- 说明:
     类的简单组成就是 成员变量 和 成员方法。 在此程序中,变量 f 就是一个普通成员变量,你要想改变普通成员变量的值(或属性),只有一种方法。在声明成员变量的类里面写一个方法改变值(或属性)。如下形式

class TTFrame {
        //普通成员变量
int i = 0;
void check(){
i = 6;
}
}

如果按你想的,像下面写,语法就不对。
class TTFrame {
//普通成员变量
int i = 0;
i = 6;
}

但是局部变量可以这样写。如下 局部变量jj  (这是成员变量和局部变量的重要区别):
class TTFrame {

int i = 0;
void check(){
i = 6;
int jj = 11;
jj = jj++;
jj = jj+i;
}

}


看下面,想改变 f 的值(属性),必须写在一个方法里(主方法当然也可以)进行操作 f .不然任何访问都不合法。

import java.awt.*;

class TTFrame {
 //普通成员变量
    Frame f = new Frame();
    //普通成员方法
    void pirntLuch(){
     int i = 0;
    }
}

public class TestFrame{
public static void main(String[] args){
TTFrame tt = new TTFrame();
tt.f.setBackground(Color.BLACK);
}

}
--------------------编程问答-------------------- 必须要在方法内部调用。 --------------------编程问答-------------------- java 类里面只能声明变量。
具体的执行必须在方法里面,或者在静态块中,比如
class TTFrame {
        private static Frame f = new Frame();
        static{
               f.setBackground(Color.BLACK);   
        }
}
--------------------编程问答-------------------- 类中不能有 语句 --------------------编程问答--------------------
引用 1 楼 yuanjianbin 的回复:
f.setBackground(Color.BLACK)是调用对象的方法,这个只有在方法中才调用。不一定是构造方法,其它方法也可以。但你直接写在类里,没有任何方法这样是不行的

说的很清楚  顶一个 --------------------编程问答-------------------- Java的三大特征:多态,继承,封装,这里就涉及封装的问题。封装是把过程(方法)和数据(属性)包围起来,对数据的访问只能通过已定义的方法来实现,面向对象设计始于这些基本概念。所以面向对象编程是以类为核心,类中包含有方法和属性。楼主忽视了面向对象编程的基本特征。 --------------------编程问答-------------------- 你直接在类中用是不行的 就相当于 饭得在碗里吃 要是没有个载体 就不符合规矩了 --------------------编程问答-------------------- 类里面自能定义字段和方法啊,  Frame f = new Frame(); 就相当一定义了一个属性 为Frame,并初始化了,  
   你 f.setBackground(Color.BLACK);这个既不是方法也不是字段
       --------------------编程问答-------------------- --------------------编程问答-------------------- 类里面的方法外部怎样可以有方法调用的语句呢?
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,