| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1108 人关注过本帖
标题:那一个比较常用啊
只看楼主 加入收藏
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
// 代码修改如下:
// 既然是抽象类,那么就不可以实体化的。
// 在抽象类中至少要有一个方法为未定义方法。
// 要用到抽象类,就要有另外一个类继承于这个抽象类,在那个继承类中来具体定义那个
// 在抽象类中未定义的方法。

abstract class class1
{
  public abstract void mat(String a);
}

class class2 extends class1
{
  static String str="";
  //private static boolean headless;
  public void mat(String a)
  {
    str = a;
    System.out.println(str);
  }
  public static void main(String args[])
  {
    try
    {
      class2 a = new class2();
      System.out.println(a.toString());
      a.mat("aaa");
   
      class2 b = new class2();
      b.mat("bbb");
      
      class2 c= new class2();
      c.mat("ccc");

      System.out.println(a.str);
    }
    catch(Exception e)
    {
      System.out.println(e.toString());
    }
  }
}

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-04 16:29
天一
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2005-8-1
收藏
得分:0 

你这样实现也不是太好。我认为应该这样比较好一点。 abstract class class1 { public static class1 cla;

static String str=""; private static Boolean headless;

protected class1() { }

public static synchronized class1 getClass1(clss2 b) { return cla=b; } public void mat(String a) { str=a; System.out.println(str); } }

class clss2 extends class1 {

public static void main(String args[]){ try { clss2 b=new clss2(); class1 a=class1.getClass1(b); System.out.println(a.toString()); a.mat("aaa"); b.mat("bbb");

System.out.println(a.str); } catch(Exception e) { System.out.println(e.toString()); }

}

}


2005-09-05 12:42
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
天一, 你上面的代码才是不好的代码,不要看它用了些技巧,却是很差的代码。 你看你将 class2 的实体 b 传给 class1 的函数,又通过该函数重新传回给 class2的实体,这不是兜圈子嘛,既浪费时间又浪费内存资源。 你知道在这么一个传递过程中发生了什么? 从C++讲这里用到了DefaultCopyConstrutor,而这完全是没有必要的动作。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-05 13:14
天一
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2005-8-1
收藏
得分:0 
我是想有一个抽象类里面有一个方法,返回对象,这样可以吗?

2005-09-06 12:11
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
你到现在脑筋还转不过弯来,你在钻牛角尖啊。
抽象类,抽象类,顾名思义,抽象类本身是不能实体化的。也就是说如果 class A 为抽象类,那么 new A();是不可以的。所以返回其实体是不可以的。要用到抽象类,就要有另外一个类继承于那个抽象类,这样的话那个继承类就继承了抽象类的方法和变量。那些在抽象类中未完全定义的方法,可以在其继承类中予以明确定义。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-06 15:43
天一
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2005-8-1
收藏
得分:0 
在抽象类里面定义一个方法返回一个对象这样也可以啊

2005-09-09 11:28
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
可以当然是可以,但是有什么意义呢?你在做多此一举的事情啊。
抽象类是让别人来继承的,否则那个抽象类存在的意义就没有了, 编程也需要一定的悟性,你再好好想想吧。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-09 18:21
天一
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2005-8-1
收藏
得分:0 
谢谢你,我知道了。你精通C#吗?

2005-09-12 12:23
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
C# 没学过, 当然不会了. 最近在网上看看了C# 的IDE, 发现没有好的IDE, 所以不学了.
C++    Java 是主流,  学好了这两个就够了,  Java 我才入门, 还有很多不懂, 光一个  IO,  就已经够让人头大了.
还有很多要学呢, 不过我想, 既然学了, 就要学精. 不然没什么意思.

所以我3年内不会碰C# 的.  

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-13 03:46
快速回复:那一个比较常用啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015853 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved