有区别,区别就是集合中的数据有类型的指定
List接口及其实现类--ArrayList
List是元素有序并且可以重复的集合,被称为序列。
List可以精确的控制每个元素的插入位置,或删除某个位置元素
List有add()插入方法和get()获取方法
ArrayList--数组序列,是List的一个重要实现类
ArrayList底层是由数组实现的,这也是其名字的由来
没有定义这个:ccr.getId()吧,Course.java里有id,没有getId()。改成ccr.id ="3" 试试
已解决。。。。笨比了
这个问题我该怎么说呢,这个例子当然没有体现出继承的优越性。。。比如你要做个选课系统,所有可选课程里有选修课和必修课,其中“考试时间”熟悉是必修课的特有属性,“签到要求”是选修课的特有熟悉,就可以建一个父类course,它只有诸如名称序号一类的熟悉,而建两个子类进行管理,如果过段时间学校又开了“艺术类选修课"这种,可以再建一个子类。。。差不多这个意思吧,继承的好处有很多的,以后可以慢慢体会。
如果你是按照视频上敲的话,这里这里通过子类创建一个课程对象,然后加到了课程集合里面去了,所以前两个是加之前的内容,后三个是加了之后的打印内容,所以才有重复
public void testForeache(){
for(Course cr : course)
System.out.println(cr);
}
这样就行了,因为你已经定义了泛型,所以在foreach语句中,不用进行类型转换,直接就可以输出结果,而且你的foreach语句写的也不对哦,要认真听老师讲哦
如果子类的构造方法没有显示调用父类的构造方法,则系统默认调用父类无参构造方。所以不能使用含参的构造方法。
求解 为什么放到里面就报错了呢
这个是自己定义的方法
可以添加泛型的子类型中的泛型,意思为:List这个泛型集合可以添加泛型规定的类对象的子类,而不是说Course是泛型类
你ChildCourse你不能什么都不写 构造函数肯定要写一下的 不然肯定加不进去
你说的很对,第一张ArrayList 是全局变量,第二张是局部变量,只能在方法中起作用
有参构造方法用来实例化Course对象时对其属性赋值.
例如:Course c = new Course("1","高数") //有参构造方法
如果是无参构造方法 Course c = new Course(); 此时属性 id 和 name都被系统默认为0
你把new ChildCourse(“3”,“我是一个ChildCourse的课程!”)改成英文的符号试一下new ChildCourse("3","我是一个ChildCourse的课程!")。我怀疑是应为你用的中文标点符号造成的
子类可以调用有参构造器啊,第一行要加上super方法
应该是name的那个错了,String类型不能强转为Course类型的
在子类的构造方法里使用 super(参数)
泛型集合添加泛型的子类型的对象实例实际上是父类对子类的引用,而子类中的非抽象方法不能被父类引用
你可以百度一下各修饰词的属性,就会比较容易理解了(public,private,protected)
定义了,把ceshi定义成了一个List类型
可以调用啊,老师没写而已。之前有讲过,子类的构造方法默认调用调用父类的无参构造方法,也可以手动使用super(参数),调用父类的含参构造方法
对象调用方法后,可以得到一个返回值或者没有返回值。
如果返回值为基本数据类型,则是不能够被赋值的
如
ct.getID()返回值为"5"
那么ct.getID() = "1";
就等同于 "5" = "1";
这样是错误的
如果需要为字段赋值,可以将数据作为参数传递给方法
public static void main(String[] args){} static就是静态的意思
main方法是静态的,静态的是在类加载的时候就加载了,它不能直接调用非静态方法,但可以通过 new 的方式访问。
非静态可以直接调用非静态。
你可以查下静态方法与非静态方法调用区别
采纳哟哟哟哟哟
html,css.js,java,jsp,数据库就够了。看着很多,但是实际上你知道基础就可以,其他的你需要什么再查就行了
把main方法上行的括号删掉。
你遍历的集合是,courses,而courses是Course对象的集合,it.next()返回的是Course对象并不是List<Course>集合
逻辑问题。不是代码问题就不报
检查一下你的ChildrenCourse类的构造函数,看有没有写相应的构造。
有可能是网络或者是浏览器问题,修复一下浏览器。