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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁朋 中级黑马   /  2012-7-15 13:26  /  1585 人查看  /  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 个回复

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

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马