黑马程序员技术交流社区

标题: 抽象类 [打印本页]

作者: zbgl    时间: 2013-11-17 22:58
标题: 抽象类
抽象类中只能定义抽象方法?抽象方法只能存在抽象类中?非抽象方法可以继承抽象方法?抽象方法可以继承抽象方法?抽象方法可以继承非抽象方法?

作者: ″先森丶玹°    时间: 2013-11-17 23:03
        1        抽象方法一定定义在抽象类中
        2         抽象方法和抽象类都必须被abstract修饰
        3        抽象类不可以new创建对象,因为调用抽象方法没意义。
        4        抽象类中的方法要被使用,必须子类重写所有抽象方法后,建立子类对象调用
                如果只重写一部分,该子类依旧为抽象类。
        5        抽象类可以不定义抽象方法,这样做仅仅是不让该类创建对象。
作者: zbgl    时间: 2013-11-17 23:13
thanks,抽象类的实现类和继承类有什么区别?
作者: 风逝    时间: 2013-11-17 23:14
楼上第二条错 被abstract修饰的类里的方法不一定都是要用abstract修饰。
而含有abstract修饰的方法所在的类也是抽象类,但该类不一定要被abstract修饰。
作者: 不抛弃不放弃    时间: 2013-11-17 23:16
1,抽象类中必须有抽象方法,也可以定义非抽象方法。
2,抽象方法也可以定义在接口中
3,方法没有继承关系,类和接口有继承关系。
4,方法与方法之间没有继承  这中关系
5,理由同上
6,同上

如果你问的是非抽象类和类的关系的话,那他们之间的关系可以是
非抽象类可以继承抽象类  并实现抽象类中的抽象方法。
抽象类可以继承抽象类。
抽象类可以继承非抽象类。
作者: 明月几时有    时间: 2013-11-17 23:48

好吧,一个个回答:
1抽象类中只能定义抽象方法?不是,也可以有非抽象方法,如果全是抽象的就是接口了,也可以一个抽象方法都不写,目的是不让该类建立对象
2抽象方法只能存在抽象类中?还可以存在接口中
3非抽象方法可以继承抽象方法?不能这么说,方法不存在继承之说,应该说抽象类,非抽象类当然可以继承抽象类
4抽象方法可以继承抽象方法?还是一样,我知道你想说抽象类,可以的
5抽象方法可以继承非抽象方法?还是抽象类,,,这个可以的,但是没人这么干。为了验证最后一个问题,举例一下代码,有结果:
public class Demo7 {
        public static void main(String[] args) {
                son s=new son();
                s.zi1();            //打印结果zi1
                s.zi2();            //打印结果zi2
                s.fu1();           //打印结果fu1      
        }
}
class son extends zi{
        public void zi1(){
                System.out.println("zi1");
        }
}
abstract class zi extends fu{
         abstract void zi1();
       
        public void zi2(){
                System.out.println("zi2");
        }
}
class fu{
        public void fu1(){
                System.out.println("fu1");
        }
}

作者: ┾——黑马    时间: 2013-11-18 09:37
你只要记住:有抽象方法的类,一定是个抽象类;抽象类中不一定有抽象方法就哦了。还有一个类继承一个抽象类的时候,如果不能继承的抽象类中的方法都实现的话,那么自身也会变成抽象类,抽象类之间是可以相互继承的而且还是实现一个一个接口。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2