黑马程序员技术交流社区
标题:
抽象类总结
[打印本页]
作者:
a80C51
时间:
2015-9-6 17:22
标题:
抽象类总结
抽象类
一、产生原因:
当多个类中出现相同功能,但功能主体不同。此时可以向上进行抽取,这时,只抽取功能定义,而不抽取功能主体而形成的
类。
二、特点:
a,抽象方法一定定义在抽象类中;
b,抽象方法和抽象类都必须被adstract关键字修饰;
c,抽象类不可以用new创建对象;
d,抽象类中的方法要被使用,必须有子类复写所有的抽象方法后,建立子类对象来调用。
e,如果子类只覆盖部分抽象方法,则该子类还是抽象类。
三、抽象类不可以实例化
四、抽象类中可以不定义抽象方法,这样做,仅仅是不让该类建立对象。
常见错误:
1,抽象类没有用abstract修饰
myAbstract.java:1: 错误: Employee不是抽象的, 并且未覆盖Employee中的抽象方法work()
2,父类的全部抽象方法被子类都重写
myAbstract.java:26: 错误: Managers不是抽象的, 并且未覆盖Employee中的抽象方法information()
abstract class Employee
{
private String NameStr;
private String IdStr;
private double Paypal;
Employee(String name,String id,double pay)
{
this.NameStr = name;
this.IdStr = id;
this.Paypal = pay;
}
/*
public void information()
{
System.out.println("We are family!!!!!!!");
}
*/
//public abstract void information();
public abstract void work();
}
class Managers extends Employee
{
private double bouns;
Managers(String name,String id,double pay,double bouns)
{
super(name,id,pay);
this.bouns = bouns;
}
public void work()
{
System.out.println("Manager is working!!!!");
System.out.println("His bouns is "+ this.bouns);
}
}
class Profession extends Employee
{
Profession(String name,String id,double pay)
{
super(name,id,pay);
}
public void work()
{
System.out.println("Profession is working!!!!");
}
}
public class myAbstract
{
public static void main(String[] args)
{
Managers mOne = new Managers("Wayne","23",100000.0,30000);
Profession pOne = new Profession("Bruce","24",9000.0);
mOne.work();
pOne.work();
}
}
复制代码
作者:
Boint
时间:
2015-9-6 17:48
沙发 顶一个
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2