关于ABSTRACT CLASS

statham2009 2010-01-12 11:27:03
大家好。最近刚从C转到JAVA上来,对ABSTRACT CLASS的运用有些不理解。

如public abstract class a{

public class ins1{
}
     public class ins2{

}
}

那我在MAIN里面定义一个ins1是否可以这样写

a var = new ins1();

我在UBUNTU下compile有错误提示,说找不到ins1. 这是什么问题呢? 谢谢大家~
...全文
197 20 打赏 收藏 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sou2012 2010-01-27
  • 打赏
  • 举报
回复
内部类。。。要先实例化他外面的那个类
windgh 2010-01-27
  • 打赏
  • 举报
回复
先不讨论书写习惯,关键字,以及一些java的正常使用方法,仅仅就你所提的问题来说
a var = new ins1();
这个是不可能实现的,因为你的var是类型a,你不可能用ins1对象来赋值

不过,你可以像下面一样创建a以及ins1对象
a var1 = new a() {};
ins1 i1 = var1.new ins1();
第一行,因为a是abstract类,所以如果你想直接用它来new就只能用动态内部类创建,所以多了个{}
第二行,是因为ins1不是static类,没办法直接引用,只能通过已经创建的a对象来调用。

最后,还是建议你先看看Thinking in java,Effective java之类的书看看,了解一下java的习惯,好的用法等等,相信你有C的基础,看那些书也要不了多久的,磨刀不误砍柴功嘛。
jocelynsuebb 2010-01-27
  • 打赏
  • 举报
回复
你在class a 里放了2个class ins1,ins2 都是class a的内部类 不能直接实例化
应该:a.ins1 var=new a.ins1();
而且你的a是抽象类 不能被实例化的
WPooh 2010-01-25
  • 打赏
  • 举报
回复
学习。
pl0528 2010-01-25
  • 打赏
  • 举报
回复
学习一下!!
Dan1980 2010-01-25
  • 打赏
  • 举报
回复
方法楼上的都说了。不过我觉得这个设计有点怪,楼主从C转过来的,是否还在用C的思想来解决Java问题?不同的语言有不同的方式,就像你英语单词语法都会了,说出来的英语老外还是听不懂,因为你没有去学人家说话的方式。建议看看《Effective Java》你会获益良多。
darxin 2010-01-23
  • 打赏
  • 举报
回复
或者

public abstract class A {

public class ins1{
public void test() {
System.out.println("ins1");
}
}
public static class ins2{
public void test() {
System.out.println("ins2");
}
}
}

public class B extends A {

}

public class C{

public static void main(String[] args) {
A.ins1 a1 = new B().new ins1();
a1.test();
}
}
darxin 2010-01-23
  • 打赏
  • 举报
回复

public abstract class A {

public static class ins1{
public void test() {
System.out.println("ins1");
}
}
public static class ins2{
public void test() {
System.out.println("ins2");
}
}
}

public class B{
public static void main(String[] args) {
A.ins1 a1 = new A.ins1();
a1.test();
}
}
lilang1234 2010-01-23
  • 打赏
  • 举报
回复
再写一个类继承上面的抽象类,然后在里面写ins1,ins2方法
然后再用父类调用指向子类对象·
xlxyeyu 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 statham2009 的回复:]
在这个类的外部可以实例化ins1吗?

public abstract class a{

        public class ins1{
                public ins1(){
                /* 省略*/
                }
        }
        public class ins2{
                public ins2(){
                /* 省略*/
                }
        }
}

我在这个大类(即a)的外部想要实例化ins1应该怎么样写呢?
[/Quote]
实例化不了的,ins1和ins2都是依赖于类a的,无法再在外部实例化,想要实例化就把它拿出来。

另外,java的习惯是类名的第一个字母大写~~
statham2009 2010-01-13
  • 打赏
  • 举报
回复
在这个类的外部可以实例化ins1吗?

public abstract class a{

public class ins1{
public ins1(){
/* 省略*/
}
}
public class ins2{
public ins2(){
/* 省略*/
}
}
}

我在这个大类(即a)的外部想要实例化ins1应该怎么样写呢?
statham2009 2010-01-12
  • 打赏
  • 举报
回复
如果要实例化应该怎么写呢? 3楼的我试了还是有错误提示。。
xmykd 2010-01-12
  • 打赏
  • 举报
回复
ins1是内部类不能简单用new来实例化。就通过外部类的引用来实例化:
ins1 var = new aa.new ins1();//aa为外部类的引用
Akon90 2010-01-12
  • 打赏
  • 举报
回复
类ins1,ins2都是a的成员,但不是a的构造方法,当然不能来实例化对象了。
magicbu 2010-01-12
  • 打赏
  • 举报
回复
你的ins1与ins2都放在class a中,这样这两个类都变成了内部类,当然不能用new来实例化了。
苍蝇①号 2010-01-12
  • 打赏
  • 举报
回复
public abstract class a{

public static class ins1{
}
public static class ins2{
}

public static void main(String args[]){
a.ins1 ins = new a.ins1();
}
}
sotom 2010-01-12
  • 打赏
  • 举报
回复
这个和你在 linux 下 和 window 下 开发没关系的

a var = new ins1();

这句话本身就有错误, 而且 抽象类 是不可以实例化的。
Akon90 2010-01-12
  • 打赏
  • 举报
回复
abstract类不能直接来实例化对象,应该用它的子类来实例化对象。
realreachard 2010-01-12
  • 打赏
  • 举报
回复
写个实现类,继承abstract class a , new 这个实现类
starluck 2010-01-12
  • 打赏
  • 举报
回复
你的 实现呢? A 也是一个 abstruct class 哦?

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧