为什么JAVA中一些类用另的一个类的对象来调用? 5C

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegxDemo03 {
public static void main(String[] args) {
String str = "a-753933" ;
String pat ="[abc]-\d{6}";
Pattern p = Pattern.compile(pat);
Matcher m = p.matcher(str); //验证字符串是否合法
if(m.matches()){
System.out.println("格式合格");
}else{
System.out.println("格式不合格");
}

}
}
感觉有点奇怪,这是一种什么逻辑?直接用一个类来实现不就可以了。具体的像
Pattern p = Pattern.compile(pat);
Matcher m = p.matcher(str); //验证字符串是否合法
还有其他一些类,像操作数据库的类也是这样的。

还比如向MySQL的JDBC链接也是这样.比如:
Connection con =DriverManager.getConnection(url,username,password);
Statement stmt = con.createStatement();
ResultSet rt = stmt.executeQuery();
我不明白的是为什么需要通过先获得con对象才能通过con对象获得stmt后才能获得rt对象.不明白这种对象的调用原理..新手.才接触java没多久,,希望各位大神能帮忙解惑.说细致点..谢谢..最好能举例说明..
-----------------问答分割线------------------

昨天提问后.自己从面向对象上找资料复习..然后看到了单例设计模式.因为之前老师在说单例设计模式时一笔带过了..所以印象不深刻..这里给自己的提问做个半总结.因为资料还在看....自我解决问题嘛..

设计模式:对问题行之有效的解决方式.其实它是一种思想.
1.单例设计模式.
解决的问题:就是可以保证一个类在内存中的对象唯一性.
必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性.
如何保证对象唯一性呢?
1.不允许其他程序用new创建该类对象.
2.在该类创建一个本类实例.
3.对外提供一个方法让其他程序可以获取该对象.

步骤:
1.私有化该类构造函数.
2.通过new在本类中创建一个本类对象
3.定义一个公有的方法,将创建的对象返回.
举个简单的例子:
class Single
{
static Single s = new Single( );
private Single( ){}
public static Single getInstance( )
{
return s;
}
}

class SingleDemo
{
public static void main(String[] args)
{
single ss = single.getInstance( );
}
}
私有化构造器,通过类名.方法名调用本类的方法返回s.来得到本类中new出来的对象.这就是昨天所提问的一部分解答..还有一部分问题找答案..为什么需要得到一层再调用一层..我也知道这是一种设计模式..只是想更深入的了解它的设计原理.以及优点..
谢谢各位耐心的解答..等我完全解决了问题..我再结帖.语言组织能力不是太好,希望这些问题能让与我有同样疑惑的伙伴做个最基础的解惑..非常感谢大家的热心回答及帮助..

11个回答

这里和“向上转型”毫无关系,而是一个方法的返回值是一个对象,这被称作“工厂模式”

比如你的例子里,Pattern并不直接使用new初始化,而是通过Compile来构造并且返回。这里静态的Pattern.Compile就是一个工厂方法。

使用工厂方法的动机主要是,构造方法的过程本身很复杂(比如Compile,构造一个正规自动机是复杂的,再比如Java里的反射方式创建对象,再比如根据查询字符串构造Parameter对象),或者需要满足特定的逻辑(比如“单例模式”),或者出于性能的需要(比如缓存和懒惰加载)等等。

dxjun1215
dxjun1215 那我是不是要完全明白工厂模式才能懂这种方式的调用呢?我需要了解哪个方面才能自我解惑?
一年多之前 回复

工厂模式单例模式很多都是你说的那样写法。有时候需要限制你去创建某个类的对象,就会隐藏该类的构造函数,只给你提供一个获取对象的方法。至于对象如何创建如何维护,都不需要你来关心。
api里这样的写法比比皆是,等你基础语法差不多了,就模仿着23中设计模式中比较重要常见的几种模式敲敲代码,既能提升熟练度,还能帮助理解设计模式

dxjun1215
dxjun1215 谢谢..我也是这么觉得的
一年多之前 回复

Java众所周知是一种面向对象的语言,将方法封装在对象类中,其他对象的调用就可以只关心接口而不需要关心具体实现。举个例子,当方法改变后,调用该方法的代码片段无需改变就可以继续运行

正则表达式的处理是组件的方式实现,用的是一组对象和方法,但是有很好的封装效果,你不需要知道内部的细节。JDBC有点差别,jdbc是第三方接口的形式提供的,
要想使用它要有第三方的接口实现,所以每次用jdbc都要有数据库驱动的信息。jdbc是设计模式当中依赖抽象不依赖具体实现细节的表现

你要先了解一下 封装继承多态和抽象 这是最基本的面向对象编程思想 不是几句话说的完的 面向对象说简单也简单 说难也难 每个不同层次的程序员都有不同的认识

另一个类中可能封装了对这个类创建对象的方法

qq_38507328
寒雨& 回复dxjun1215: 如果调用静态方法的话不用创建对象,这个静态方法里面可能会返回一个这个对象
一年多之前 回复
qq_38507328
寒雨& 回复dxjun1215: 如果调用静态方法的话不用创建对象,这个静态方法里面可能会返回一个这个对象
一年多之前 回复
dxjun1215
dxjun1215 我看了下源码..没有看到创建对象的方式...所以才来提问的..
一年多之前 回复

一方面都写在一个类里代码太多,不容易维护,另一方面,这些连接数据库什么的都是公共的,每次调用都写就会有大量重复代码,把公共的封装起来,每次用到都可以直接调用

类加载是有顺序的,有些类实需要别的类加载完了,它自己加载时才能获得加载时的条件,比如数据库的操作,它是有一个流程的,加载驱动--》通过驱动获得数据库链接--》
通过链接向数据库发送指令--》让后获得请求数据返回的响应--》关闭链接、指令和流资源、处理结果集等,都是有先后顺序的,直接用一个类无法完成,因为它比如你的结果集类加载时它必须要
链接好了才能满足条件。

dxjun1215
dxjun1215 加载驱动类.我明白....我刚刚开了下单例设计模式...有些明白了..也是面向对象的一种体现..只是当时学的时候,老师在单例设计模式一笔带过了..所以体会不深..
一年多之前 回复

面向对象一个很重要的特点是,一个类只做一件事

Question:
感觉有点奇怪,这是一种什么逻辑?直接用一个类来实现不就可以了
Answer:
直接用一个类实现是可以的,这就只是针对于自己来解决问题,是一种面向过程的思想,
若以后需要匹配后返回匹配串,那又得重新写一个类,这样完全失去了java的面向对象思想。
只是个人愚见,错误之处还请提出哦~

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
一个类的对象传入另一个类
我在编写一个程序,其中涉及到main中一个类创建的对象传入另一个类中构造函数,并且在被传入对象的类中,还要调用该对象的属性,请问用什么方法调用!
怎么用一个对象调用另一个类中对象的方法
怎么用一个对象调用另一个类中对象的方法 比如一个类An ,一个类B,B里面有个方法show(),在main中A a=new A();B b=new B();在A中没有调用B方法的情况下,我想通过a调用B中的show()方法,该怎么实现。初学者,求大神给我指导下,不知道我表达的是否准确
java 反射调用另一个类中的方法
class A: import java.lang.reflect.Method; public class HelloWorld { public static void main(String[] args) { System.out.println("before test Dex"); HelloWorld hw = new HelloW...
关于在一个类中调用另一个类的成员对象
[code=c]rnclass Arnrn typedef std::map INDEX_RES_MAP;rnpublic:rn int do_run()rn rn B b = new B;rn rnpublic:rn INDEX_RES_MAP index_res_map_; // 摄像头信息表rn;rnrnclass Brnrn;rn在A的do_run中new了一个B,怎么样在B中的成员函数中去获取A的index_res_map_中的数据,每次获取一个后,就删除掉rn[/code]
一个类调用另一个类的问题
Global_Class.csrn---------------------rnpublic class Global_Classrnrn public string strMessage;rnrn public class Classrn rn public static void Response_End(string strMessage)rn rn HttpContext.Current.Response.Write(strMessage);rn HttpContext.Current.Response.End();rn rnrn public readonly static string strConn = Get_Conn();rnrn private static string Get_Conn()rn rn string strConn = "";rnrn tryrn rn strConn = ConfigurationManager.ConnectionStrings["连接数据库"].ToString();rn rn catchrn rn Response_End("数据库连接配置错误!");rn rnrn return strConn;rn rn rnrnrnRegister.csrn-----------------rnpublic class Registerrnrn public void Check_Person(out string strMessage, string personname)rn rn SqlConnection conn = new SqlConnection(strConn);rnconn.Open();rn SqlTransaction tran = conn.BeginTransaction();rn SqlCommand comm = new SqlCommand("Register_Check", conn);rn comm.Transaction = tran;rnrn tryrn rn comm.CommandType = CommandType.StoredProcedure;rn comm.Parameters.Add("@strMessage", SqlDbType.NVarChar, 1000).Direction = ParameterDirection.Output;rn comm.Parameters.Add("@personname", SqlDbType.NVarChar, 50).Value = personname;rn comm.ExecuteNonQuery();rnrn strMessage = comm.Parameters["@strMessage"].Value.ToString();rn tran.Commit();rn rn catch (Exception Message)rn rn strMessage = "连接服务失败,详细(" + Message.Message.ToString() + ")";rn tran.Rollback();rn rnrn conn.Close();rn rnrnrnrnrn问题是:这样提示Register.cs错误rn 11 当前上下文中不存在名称“strConn” F:\vs2005\App_Code\Register.cs rnrnrn这是怎么回事???
一个类无法调用另一个类
例如:已经有DBConnection.java( 都是public 定义的)rn我的在Login.java中调用它不好用.这是为什么啊?
怎样在一个类中调用另一个类的方法
小弟新学.net,自己建了一个operate类,里面有一些方法实现诸如绑定datagrid之类的操作,又建了一个DBAccess类,想在里面实现页面控件绑定数据库数据的功能。比如operate类里面有方法BindDataGrid(string sql,DataGrid dg),我想在DBAccess里实现public void BindUser(DataGrid dg)rnrn string sql="select * from user";rn operate.BindDataGrid(sql,dg)rnrn在页面调用DBAccess类我会先实例化类,但是如何在DBAccess类里面调用operate类中的方法呢?谢谢
在一个类中调用另一个类的变量?
我在一个类中调用 CDHSHHelperDlg这个类的成员函数 出错rnint nRecord = CDHSHHelperDlg::m_listAccount.GetItemCount(); //获取行总数rn “.GetItemCount”的左边必须有类/结构/联合rnrnrn我应该怎么写?要详细步骤~
在一个类中调用另一个类的事件,出问题了?
// 类1 form2rn public partial class Form2 : Formrn rn public void button2_Click(object sender, EventArgs e)rn rnrn this.textBox2.Text = "777777777";rnrn rnrn//类2 form3rn public partial class Form3 : Formrn rnrn private void button18_Click(object sender, EventArgs e)rn rn Form2 a = new Form2();rn a.button2_Click(sender, e);rn rn rnrn rnrn为什么在form3中调用form2的button2_Click事件未能成功呢?rn当我把textBox2.Text = "777777777";改成 MessageBox.Show("ooooooooo");又可以呢?rn
一个类怎样调用另一个类中的方法
一个类怎样调用另一个类中的方法
Qt一个类中调用另一个类的函数
#include "stdafx.h"rnrnclass Arnrnpublic:rn int it;rn A():it(100)rn rnrn rnrn;rnclass Brnrnpublic:rn A a;rn int getvalue();rnprotected:rnprivate:rn;rnint B::getvalue()rnrn return a.it;rnrnrnrnint _tmain(int argc, _TCHAR* argv[])rnrn B b;rn int kk = b.getvalue();rn return 0;rnrnrnrn类似如上的调用在Qt中可以应用吗?为什么我在Qt中实现不了呢,高手指点
一个类调用另一个类的函数
主要的类是一个基于Applet的类graphClient。rn其中定义了一个函数rndataCommunicate()rnrn主要是进行socket通信。rninputStream ,outputStream等都是在init()中已经初始化了的。rn另一个类canva负责监听用户的事件,当用户执行了某一操作后就执行graphClient的dataCommunicate()函数。rn可是程序执行到os.write()就出现了nullPointerException.rn在类canva中定义了rngraphClient graph = new graphClient();rn对函数的调用是:rngraph.dataCommunicate();rn在dataCommunicate()中os write之后有flush(). rn
vc一个类中调用另一个类的成员函数的
pDoc->m_pVctestView->DeleteAllItems();有错误rnDeleteAllItems是View类中的一个成员函数,rn 在DOC中这样定义,CVctestView* m_pVctestView=NULL;rn错误如下;rnd:\我的文档\vctest\vctestdoc.h(21) : error C2143: syntax error : missing ';' before '*'rnd:\我的文档\vctest\vctestdoc.h(21) : error C2501: 'CVctestView' : missing storage-class or type specifiersrnd:\我的文档\vctest\vctestdoc.h(21) : error C2501: 'm_pVctestView' : missing storage-class or type specifiers rn有明白的,帮忙解决一下
一个类中调用另一个类的方法
有两个类 A ,B。 现在类B中调用类A的statusBarPanel1.Text,实例化对象后可以调用,但是运行结果是类A的statusBarPanel1.Text没有变化. 求助大家帮助。 谢谢
如何在一个类中调用另一个类?
类一:rnclass Spherernrn static final double PI=3.14;rn static int count = 0;rn double radius;rn double xCenter;rn double yCenter;rn double zCenter;rn Sphere (double theRadius,double x,double y,double z)rn rn radius=theRadius;rn xCenter=x;rn yCenter=y;rn zCenter=z;rn rn static int getCount()rn rn return count;rn rn double volume()rn rn return 4.0/3.0*PI*radius*radius*radius;rn rnrn类二:调用类一。rnclass Creatern public static void main(String[] args)rn rn System.out.println("Number of objects="+Sphere.getCount());rn Sphere ball = new Sphere (4.0,0.0,0.0,0.0);rn System.out.println("Number of objects="+Sphere.getCount());rn Sphere globe =new Sphere(12,1.0,1.0,1.0);rn System.out.println("Number of objects="+ Sphere.getCount());rn System.out.println("ball volume="+ball.volume());rn System.out.println(" globe volume="+globe.volume());rn rnrn编译出现不能解析Sphere;
一个类在另一个类中调用,求指导
现在遇到一个比较初级的问题,还望版上的大神能够不吝赐教!rn现在我在Qt上开发一个界面,不过总的来说还是一个类,所以这个问题就归结为在一个类中调用另外一个类rn问题如下:rn首先[code=c]class cameraGet : public QMainWindowrnrn Q_OBJECTrn rnpublic:rn //定义PTZ摄像机控制参数rn VISCA_Cam * Cam1;rn VISCA_Timer2* tm1;rn[/code]rn这里简化了代码,主要就是定义了这么两个类rn然后再构造函数中进行了new,代码如下:rn[code=c]cameraGet::cameraGet(QWidget *parent) :rn QMainWindow(parent),rn ui(new Ui::cameraGet)rnrn ui->setupUi(this);rn timer = new QTimer(this);rn imag = new QImage(); // 初始化rn //initialize the PTZ protocolrn tm1= new VISCA_Timer2; //rn DWORD result;rn char* nPortc="COM1";rn Cam1 =new VISCA_Cam(nPortc,1,1,result); //打开串口rn[/code]rn上述代码也经过简化,主要就是对定义的两个类进行了new,但是后面貌似这个没有new好,出现了rn“底层由于接收到操作系统的信号而停止”rn这个错误提示,网上搜了下好像类没有定义好之类的,那么相对于我这个代码而言,只有这两个类有问题,所以还请各位帮忙看看,非常感谢!!
怎样在一个类中调用另一个类的变量
我想在CTestView类的OnDraw调用对话框类中的一个变量,我定义一个对话框对象,用对象来调用变量,但没有成功。rn程序如下:rnvoid CTestView::OnDraw(CDC* pDC)rn....rn.....rnCZhixianDlg dlg;//定义一个对话框的对象rnrn//a1,b1,a2,b2是CZhixianDlg类的变量,在对话框类中已经给他们赋给了相应的值;rndlg.a1;rndlg.b1;rndlg.a2;rndlg.b2;rnrnpDC->MoveTo(a1,b1);rnPDC->LineTo(a2,b2);rnrn运行程序,但没有画出相应的直线
一个类如何调用另一个类中的数据?
现在有一个对话框,有几个文本框,输入一些数据。rn在另一个对话框中如何调用上面输入的数据?
静态属性在另一个类中调用
程序代码如下:rnrn[code=Java]public class ClassArnrn public static String str;rn public ClassA()rn rn str= new String();rn rn public static void main(String [] args) throws Exceptionrn rn str= "hello";rn Thread.sleep(5000);rn System.out.println(str);rn rn[/code]rnrn[code=Java]public class ClassBrnrn public static void main(String[] args)rn rn String str = (ClassA.name+="haha");rn System.out.println(str);rn rn[/code]rnrn问题是,先运行ClassA,再运行ClassB,ClassB运行结束后输出nullhaha,而ClassA sleep 5秒后输出是hello.为什么操作的同一个静态属性运行的结果确没有任何联系呢?我原来是在一个类中用一个静态的HashMap保存数据,中途从另一个类中调用这个静态的HashMap却取不到任何数据,然后自己写了上面两个测试类,郁闷了半天越整越糊涂了.请教各位才子才女!! 不甚感激!
一个类中设置对象,在另一个类中使用对象
我有这样一个需求,描述如下:rn[code=C/C++]rnrnrnclass CTest1:public ISapServerrnrnpublic:rn CTest1(void);rn ~CTest1(void);rnprivate:rn IPacketParser * m_pSapServerMgr;rn;rnrnrnclass CTest2rnrnpublic:rn CTest2(void);rn ~CTest2(void);rnpublic:rn virtual void setPacketParser( int nId, IPacketParser * packetParser );/*保存用户传过来的对象*/rn rn //(CTest1中的m_pSapServerMgr = packetParser ,或者是CTest12中的m_pSapServerMgr =packetParser , 但要保证CTest1中的对象能取 到这个m_pSapServerMgr)rn rn//private:rn// IPacketParser * m_pSapServerMgr;rn;rn[/code]rnrn这是一个头文件中的两个类, 我的需求是这样的。 一个用户(可能有多个用户) 需要调用setPacketParser,把它的对象传给我。我需要保存这个 IPacketParser * 对象, 也就是m_pSapServerMgr 。 在 CTest1 类中使用。。怎么样来设计 程序才能达到目的呢。
一个类为什么不能调用另一个类中的成员函数
我在程序中有两个对话框类C1和弹出的非模态的对话框C2rn我想在弹出C2中执行C1中成员函数fn()。rn我在C2中声明了rnextern C1 *p1;rn调用用p1->fn()rn我跟踪后发现在fn中读取C1的成员变量时会报错(不论是private还是public)rn不知道是什么原因rn请指教,谢谢rn
调用另一个类的成员变量
类B 想要调用另一个类A 中的成员变量mapstr;rn我用友元无法调用其值。请问有没有别的什么办法
急急急!java中一个类调用另一个类的链表问题,
首先有一个类List负责链表的基本初始化脸变、添加节点、删除节点等操作rn我在A类中声明了List的一个对象l并作为A的一个成员变量,且在相关函数中对l进行了添加结点的操作,即l已经不是一个空链表了。在另外一个类B中,需要用到链表的内容,在B类也声明List一个对象l1,通过赋值将l赋值给l1,但是l1好像是空的。程序大概过程如下:rnpublic class Listrnrn //list的基本操作rnrnclass Arnrn List l;rn //……对l添加结点rn rn //……打印l的内容,可以显示出添加的内容rnrnclass Brnrn A a;rn List l1;rn l1=a.l;rn //……打印l1,没有结果显示??????????rn
为什么不能调用另一个类的函数?
CString CMyTreeCtrl::ShowTreeValue()rnrn CString strText;rnrn strText="hello";rn return strText;rnrn我在一个类中定义了这个函数,我在另一个类中为什么调用不了这个函数呢?我在这个类的头文件中包含了另外一个类的头文件。rn
类中的函数想调用另一个类中的对象
我定义了一个StringBad类并声明[code=C/C++]public:char * str;[/code]rn在该类中声明了一个友元函数:[code=C/C++]friend std::ostream & operator<<(std::ostream & os,const StringBad st);//重载<
在一个类的构造函数里面new了另一个类的对象
[code=c]rnrnCWordView::CWordView()rnrn m_pEditCode = new CEdit;rn m_pEditWord = new CEdit;rn m_pStaicCode = new CStatic;rn m_pStaicWord = new CStatic;rn m_pZoomView = new CZoomView;rn m_pBtnReset = new CButton;rn m_pBtnStore = new CButton;rnrn CSize size1(0,0);rn SetScrollSizes(MM_TEXT,size1);rnrnrnrnrnCWordView::~CWordView()rnrn if(m_pEditCode != NULL)rn rn delete m_pEditCode;rn m_pEditCode = NULL;rn rn if(m_pEditWord != NULL)rn rn delete m_pEditWord;rn m_pEditWord = NULL;rn rn if(m_pStaicCode != NULL)rn rn delete m_pStaicCode ;rn m_pStaicCode = NULL;rn rn if(m_pStaicWord != NULL)rn rn delete m_pStaicWord;rn m_pStaicWord = NULL;rn rn if(m_pBtnStore != NULL)rn rn delete m_pBtnStore;rn m_pBtnStore = NULL;rn rn if(m_pBtnReset != NULL)rn rn delete m_pBtnReset;rn m_pBtnReset = NULL;rn rn if(m_pZoomView != NULL)rn rn delete m_pZoomView;rn m_pZoomView = NULL;rn rnrnrn[/code]rnrn这块不知道为啥有问题 就是在关闭单文档的时候 出现会挂在CWordView的析构函数里的 delete m_pZoomView这句 提示“Unhandled exception in at 0X00F6AB72 in test.exe : 0XC000005:Acess violation reading location 0xfeefef2”rnrn如果删除了这句话就没有问题rn还有 在这个m_pZoomView里面申请了一个图像的内存 但是在m_pZoomView的析构函数里面已经delete了rnrn请问为啥这个样子
一个类的对象做为另一个类的数据成员
  1、在c++中,当把一个类的对象作为另一个新类的数据成员时,定义格式为: class  X     {    类名1  成员名1;        类名2  成员名2;    其他成员;     } 2、如果一个类A的对象作为另一个类B的数据成员,则在类B的对象创建过程中,调用其构造函数的过程中,数据成员(类A的对象)会自动调用类A的构造函数。     但是应注...
一个类的对象作为另一个类的成员变量的问题
我在第二个类里面声明了第一个类的对象,那么是声明成指针对象还是普通对象?因为我在声明普通对象的时候,编译出错,说“第一个类的构造函数的调用没有匹配的函数”。当声明成指针类型对象的时候,就编译通过。rn我想问一下这里面到底有什么区别?rn还有这个对象把它声明在private里面呢,还是声明在public里面呢?rn第二个类是Qt的主窗口类。
一个类的对象可以成为另一个类的数据成员
在慕课网学习类的封装 看着视频跟着老师敲代码感觉很简单 关掉视频自己敲 敲到一半发现敲不动; 然后又反复的看了几遍视频 最后知道了自己不会的原因 这是要求 其实老师是 实例化了两个坐标类的对象 然后放到Line类里作为 private 成员变量了———————————————————————— 下面是我自己敲的代码 总共有5个文件 首先是包含main函数的cpp文件#i
如何将一个类的对象变成另一个类的成员变量??
在学习中遇到这样的问题:rn [color=#FF0000]为CEX_CtrlsDlg类添加两个成员变量,一个是int 型m_nRed,另一个是画刷CBrush类对象m_Brush[/color]rnrnrnrn// EX_CtrlsDlg.h : header filern//rnrn#if !defined(AFX_EX_CTRLSDLG_H__A7B383D9_4557_4ED8_B130_E3039E0C207B__INCLUDED_)rn#define AFX_EX_CTRLSDLG_H__A7B383D9_4557_4ED8_B130_E3039E0C207B__INCLUDED_rnrn#if _MSC_VER > 1000rn#pragma oncern#endif // _MSC_VER > 1000rnrn/////////////////////////////////////////////////////////////////////////////rn// CEX_CtrlsDlg dialogrnrnclass CEX_CtrlsDlg : public CDialogrnrn// Constructionrnpublic:rn CEX_CtrlsDlg(CWnd* pParent = NULL); // standard constructorrn //int m_nRedValue;rn int m_nRed;rn int m_Brush; [color=#FF0000]//我在这里添加了m_nRed;int m_Brush[/color] 但是编译的结果是rnrnEX_CtrlsDlg.cpp(258) : error C2228: left of '.Detach' must have class/struct/union typernEX_CtrlsDlg.cpp(259) : error C2228: left of '.CreateSolidBrush' must have class/struct/union typernrnrn即[color=#FF0000] m_Brush.Detach();rn m_Brush.CreateSolidBrush(color);出错了[/color]rnrn如何添加,请教高手们
一个类如何访问另一个类的对象?
例如:rnCdialog1 中定义了一个数据库连接对象rn CADODatabase* myDatabase;rnrn在Cdialog2中要使用这个对象,怎么引用呀
为什么在一个类中定义另一个类的对象,却无法调用该类的成员函数?
如题rn间如下连接rnhttp://www.vchelp.net/cndevforum/subject_view.asp?subject_id=148314&forum_id=
怎样在类中定义另一个类的对象
假如我声明了rnrnclass A rnrnstatic int i;rnstatic void Load();rnrnrn并实现了class A;rnrn想在再声明一个类B,在类B的实现中产生类5个A的对象
Graphics对象如何传到另一个类中?
我声明: Public g0 As Graphicsrn在另一个类中如何拿到g0?rn
swing:为什么一个类里调用另一个类的panel不显示
//这是index类,要在这个类里调用另外一个类的panelrnpublic class IndexFrame extends JFrame rnrn private static final long serialVersionUID = 1L;rnrn protected ImagePanel backgroundPanel;rn protected NavigationPanel navigationPanel;rnrn public IndexFrame() rn init();rn rnrn private void init() rn JFrame frame = new JFrame();rn backgroundPanel = new ImagePanel(new ImageIcon(rn "images/backgroundImg.png").getImage());rn backgroundPanel.setOpaque(false);rn navigationPanel = new NavigationPanel();rn backgroundPanel.add(navigationPanel);rn frame.getContentPane().add(backgroundPanel);rn frame.pack();rn frame.setVisible(true);rn frame.setLocation(200, 80);rn frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);rn rn public static void main(String[] args) rn new IndexFrame();rn rnrnrnrnrnrn//这是被调用的类,此类里构造一个panelrnpublic class NavigationPanel extends JPanel rn protected static ImagePanel navigationPanel;rn protected JPanel navButtonPanel;rn rn public NavigationPanel() rn init();rn rnrn private void init() rn navigationPanel = new ImagePanel(new ImageIcon(rn "images/navigationBgr2.png").getImage());rn navigationPanel.setOpaque(false);rn navigationPanel.setOpaque(false);rn navigationPanel.setVisible(true);rn System.out.println("navigationPanel 初始化完毕");rn rn public static void main(String[] args) rn new NavigationPanel();rn JFrame frame = new JFrame();rn frame.add(navigationPanel);rn frame.setSize(600, 200);rn frame.setVisible(true);rn frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);rn rnrnrn这样调用,为什么不显示?rn单独运行navigationPanel就能显示rn请大家帮解决,谢谢!
在CMainFrame中,如何调用另一个类的的控件对象!
我在CXTOutLookBar1类中声明了一个树控件对象: CTreeCtrl m_wndTreeCtrl;rnrn在CMainFrame我要调用m_wndTreeCtrl, rnrn我在Mainframe.h 和Mainframe.cpp中都加入了 include "CXTOutLookBar1.h"rnrn但还是出了这种错误 :error C2065: 'm_wndTreeCtrl' : undeclared identifierrnrn我该怎么做才好呢。请各位指点!谢谢!!!
请问某类的对象调用另一个类的对象是什么意思
[code=java]package com.lzw;rnrnimport static java.lang.System.*;rnrnimport java.util.*;rnclass Test rn int i = 0;rnrnrnpublic class FinalData rn static Random rand = new Random();rn private final int VALUE_1 = 9; // 声明一个final常量rn private static final int VALUE_2 = 10; // 声明一个final、static常量rn private final Test test = new Test(); // 声明一个final引用rn private Test test2 = new Test(); // 声明一个不是final的引用rn private final int[] a = 1, 2, 3, 4, 5, 6 ; // 声明一个定义为final的数组rn private final int i4 = rand.nextInt(20);rn private static final int i5 = rand.nextInt(20);rn rn public String toString() rn return i4 + " " + i5 + " ";rn rn rn public static void main(String[] args) rn FinalData data = new FinalData();rn data.test=new Test();rn //可以对指定为final的引用中的成员变量赋值rn //但不能将定义为final的引用指向其他引用rn data.value2++;rn //不能改变定义为final的常量值rn data.test2 = new Test(); // 可以将没有定义为final的引用指向其他引用rn for (int i = 0; i < data.a.length; i++) rn // a[i]=9;rn //不能对定义为final的数组赋值rn rn out.println(data);rn out.println("data2");rn out.println(new FinalData());rn out.println(data);rn rn[/code]rn代码如上,请问 data.test=new Test() 和 data.test2 = new Test() 这一段代码是什么意思,没看懂。表示我知道对象可以访问方法和变量,但是对象调用对象是什么意思,请老师指教?
一个类调用另一个类的成员函数出错
新建了一个对话框工程CFirstDlg,在里面添加了一个也是基于CDialog的类CSecondDlg.现在我在CSecondDlg里通过如下方式调用CFirstDlg里的成员函数:[code=C/C++]CFirstDlg dlg;rndlg.SetTimer();[/code]运行的时候会出错Debug Assertion Failed,File:afxwin2.inl,Line:168.可是dlg.MessageBox();却可以显示出来,所以想请教下各位通过这种方式调用另一个类的成员函数正确吗,正确的话为什么会出错呢。不正确的话又该怎么调用呢?先谢谢啦
一个类调用另一个类里的成员变量
我看了孙鑫的视频,lesson8里那个关于属性页的视频,rn想在一个类里面向这样调用另外一个类里的成员变量,可是在vs 2008下没有作用,rn成员变量都设成了publicrnrnm_CameraCheck=sheet3.CameraPro.m_UseCamera;rnrn想通过m_UseCamera的值,利用switch语句来生成不同的对话框。rn可是没用,编译没有错误,但不能实现功能。rnrnCCameraProppage CameraPro;(在其他类里声明)rnrnCCameraDlg dlg1;rnCPictureDlg dlg2;rnCSheet sheet3;rnm_CameraCheck=sheet3.CameraPro.m_UseCamera;rnswitch(m_CameraCheck)rn rn case -1:rn MessageBox(_T("请选择!"),_T("温馨提示"));rn break;rn case 1:rn dlg2.DoModal();rn OnOK();rn break;rn case 0:rn dlg1.DoModal();rn OnOK();rn break;rn
一个类如何调用另一个类的函数?
如想让RootCommand中的函数fDoCommand调用DoCommand中的函数,用声明一个对象吗?下面是代码rnDoCommand.hrn#ifndef DOCOMMANDrn#define DOCOMMANDrn#include "VariableDeclare.h"rnclass DoCommandrnpublic :rn void GoToBeginning(List *buffer);rn void DeleteLine(List *buffer);rn void GotoLine(List *buffer );rn void Help();rn void InsertLine(List *buffer);rn void NextLine(List *buffer);rn void PrecedingLine(List *buffer);rn void ReadFile(List *buffer );rn void WriteFile(List *buffer);rn;rn#endifrnrnRootCommand.hrn#ifndef ROOTCOMMANDrn#define ROOTCOMMANDrn#include "VariableDeclare.h"rnclass RootCommandrnpublic:rnvoid CreatList(List *buffer);rnvoid ListSize(List *buffer);rnvoid OpenFile(int,char *[],List *buffer);rnvoid GetCommand(char *command,List *buffer);rnvoid InserList(Position p,ListEntry x,List *list);rnvoid DeleteList(Position p,ListEntry *x,List *list);rnvoid RetrievelList(Position p,ListEntry *x,List *list);rnvoid ReplaceList(Position p,ListEntry x,List *list);rnvoid fDoCommand(char command,List *buffer);rnvoid DisplayCurrentLine(List *buffer);rnprivate :rn char command;rn;rn#endifrnrnDoCommand.cpprn#include "RootCommand.h"rn#include "DoCommand.h"rn#include "VariableDeclare.h"rn#include rnusing namespace std;rnvoid RootCommand::fDoCommand(char command,List *buffer)rnrn rn switch(command)rn case 'b':rn DoCommand.GoToBeginning(buffer);rn break;rn case 'd':rn DoCommand.DeleteLine(buffer);rn break;rn case 'g':rn DoCommand.GotoLine(buffer);rn break;rn case '?':rn case 'h':rn DoCommand.Help();rn break;rn case 'i':rn DoCommand.InsertLine(buffer);rn break;rn case 'n':rn DoCommand.NextLine(buffer);rn break;rn case 'p':rn DoCommand.PrecedingLine(buffer);rn break;rn case 'r':rn DoCommand.ReadFile(buffer);rn break;rn case 'w':rn DoCommand.WriteFile(buffer);rn break;rn rn
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数

相似问题

3
DataSetSurrogate对象用Binary序列化并ZIP压缩 java解析
9
如何理解 java编程思想中“静态方法可以创建其自身对象”这句话?
0
java调用Windows语音调用不了
2
在看书《Java核心技术I》,在代理那章有一个关于InvocationHandler的问题没看懂,望大神能解释一下。
5
JAVA中的对象只能调用成员变量和方法吗?
0
java反射,自动调用方法,方法的返回值类型是不一定的,怎么得到方法的返回值类型的原来的类型!
1
java定义类,对象,方法的问题
1
请教大神,如何才能调用集合中的引用对象并使用它啊?代码如下
8
使用java的Http请求里的Url对象调用第三方接口返回的数据中文乱码
8
java中的继承调用get、set方法
2
如何在java里调用使用get方法,参数以application/x-www-form-urlencoded方式传递的web接口?
4
java后端调用Post请求在地址后面加参数 抛异常
1
java中静态方法为什么无法调用非静态变量或者方法
1
java中局部类调用它所在的局部方法中的变量问题
2
Tomcat中是通过什么方式实例化Servlet类的
1
怎么用JSON获得基于网页的API返回的对象?
1
我是Java初学者刚学到对象与类,我调用类方法时总是出错求大神帮忙
3
我是Java初学者刚学到对象与类,我调用类方法时总是出错求大神帮忙看一下这个报错是什么意思
2
JAVA关于类的初步应用
1
一个类如何调用其他包中的类的对象?