A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁朋 中级黑马   /  2012-7-15 13:26  /  1583 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 丁朋 于 2012-7-15 20:38 编辑

    抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用。
如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
    这是我记的笔记,想问下,父类有n个方法,子类只复写了其中的n-1个方法,子类一定是一个抽象类吗?
还是有特例?

就是

public abstract class Student
{
method1(){}
method1(){}
}
public class StudentDemo extends Student
{
method1(){}//只复写父类的方法
}

那么public class StudentDemo extends Student这句话我这样写可以吗?
还是一定要public abstract class StudentDemo extends Student这样写。
有点疑惑,是一定还是可以不?

5 个回复

倒序浏览
本帖最后由 包晗 于 2012-7-15 13:51 编辑

public abstract class Student
{
method1(){}
method1(){}
}
public class StudentDemo extends Student
{
method1(){}//只复写父类的方法
}


抽象类里  抽象方法前  加一个abstract
带码中的method1(){}   写成  abstact   method1() ;   
分号一定要加上  

public class StudentDemo extends Student
public abstract class StudentDemo extends Student



继承一个抽象类且抽象类里有抽象方法    子类也会抽象了
子类也要 写上 abstract


顺道说一下   你可能赶时间漏了
抽象类  
抽象类里 需要设定返回值类型  

希望对你有帮助
12期我来了

回复 使用道具 举报
你只复写了父类的一个抽象方法,子类还是一个抽象类,一定要加一个abstract
回复 使用道具 举报
1、抽象类可以不包括抽象方法.
2、但是含有抽象方法的类绝不能被实例化.
3、如果子类是非抽象的,那么它就必须实现父类中的抽象方法;否则,它继承来的抽象方法仍然是个抽象方法.
回复 使用道具 举报
public abstract class Student
{
method1(){}
method1(){}
//ru如果这样定义的话,你的意思就是这个抽象类中你并没有定义抽象方法,而是普通的方法,当然毕老师说过这是允许的,这样做仅仅是不让该类建立对象。
}
public class StudentDemo extends Student
{
method1(){}//只复写父类的方法//而由于抽象父类中并没有抽象方法,当然也没抽象方法让子类去复写呀,所以public class StudentDemo extends Student一定要这样写呀
}
回复 使用道具 举报
public abstract class Student
{
method1(){}   //这不是抽象方法,抽象方法必须加abstract关键字,且后面要加“;”,而且不能有函数体。此处应该写 abstract method1();
method1(){}  //我想这个可能是LZ笔误写错了,这个函数名和上一个是一样的,参数也相同,不能构成重载。LZ可能是要写abstract method2();
}
public class StudentDemo extends Student
{
method1(){}//只复写父类的方法
                           //子类继承父类时,会继承父类所有的非私有的方法,且对父类中的抽象方法要定义方法体。按照楼主所说,没有对所有的抽象方法定义方法体,
                                     //那么就以为着子类中还有抽象方法,那么子类必须要定义为抽象类。
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马