首页 > 代码库 > Java基础九--抽象类
Java基础九--抽象类
Java基础九--抽象类
一、抽象类介绍
/*
抽象类:
抽象:笼统,模糊,看不懂!不具体。
特点:
1,方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰。
抽象方法必须定义在抽象类中。该类必须也被abstract修饰。
2,抽象类不可以被实例化。为什么?因为调用抽象方法没意义。
3,抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化。
否则,这个子类还是抽象类。
1,抽象类中有构造函数吗?
有,用于给子类对象进行初始化。
2,抽象类可以不定义抽象方法吗?
可以的。 但是很少见,目的就是不让该类创建对象。AWT的适配器对象就是这种类。
通常这个类中的方法有方法体,但是却没有内容。
abstract class Demo
{
void show1()
{}
void show2()
{}
}
3,抽象关键字不可以和那些关键字共存?
private 不行
static 不行 如果是静态的话不需要对象,而抽象类就是需要对象的
final 不行
4,抽象类和一般类的异同点。
相同点:
抽象类和一般类都是用来描述事物的,都在内部定了成员。
不同:
1,一般类有足够的信息描述事物。
抽象类描述事物的信息有可能不足。
2,一般类中不能定义抽象方法,只能定非抽象方法。
抽象类中可定义抽象方法,同时也可以定义非抽象方法。
3,一般类可以被实例化。
抽象类不可以被实例化。
5,抽象类一定是个父类吗?
是的。因为需要子类覆盖其方法后才可以对子类实例化。
*/
abstract class Demo
{
abstract /*抽象*/ void show();
}
/*
class DemoA extends Demo
{
void show()
{
System.out.println("demoa show");
}
}
class DemoB extends Demo
{
void show()
{
System.out.println("demob show");
}
}
*/
abstract class 犬科
{
abstract void 吼叫();
}
class 狗 extends 犬科
{
void 吼叫()
{
System.out.println("汪汪");
}
}
class 狼 extends 犬科
{
void 吼叫()
{
System.out.println("嗷嗷");
}
}
class AbstractDemo
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
二、抽象类实例
1 /* 2 雇员示例: 3 需求:公司中程序员有姓名,工号,薪水,工作内容。 4 项目经理除了有姓名,工号,薪水,还有奖金,工作内容。 5 对给出需求进行数据建模。 6 7 8 9 分析: 10 在这个问题领域中,先找出涉及的对象。 11 通过名词提炼法。 12 程序员: 13 属性:姓名,工号,薪水、 14 行为:工作。 15 经理: 16 属性:姓名,工号,薪水,奖金。 17 行为:工作。 18 19 20 程序员和经理不存在着直接继承关系, 21 22 但是程序员和经理却具有共性内容。 23 可以进行抽取。因为他们都是公司的雇员 24 25 可以将程序员和经理进行抽取.建立体系. 26 27 */ 28 29 //描述雇员。 30 31 abstract class Employee 32 { 33 private String name; 34 private String id; 35 private double pay; 36 Employee(String name,String id,double pay) 37 { 38 this.name = name; 39 this.id = id; 40 this.pay = pay; 41 } 42 43 public abstract void work(); 44 45 } 46 47 48 //描述程序员。 49 class Programmer extends Employee 50 { 51 Programmer(String name,String id,double pay) 52 { 53 super(name,id,pay); 54 } 55 public void work() 56 { 57 System.out.println("code..."); 58 } 59 } 60 61 //描述经理。 62 class Manager extends Employee 63 { 64 private int bonus; 65 Manager(String name,String id,double pay,int bonus) 66 { 67 super(name,id,pay); 68 this.bonus = bonus; 69 } 70 public void work() 71 { 72 System.out.println("manage"); 73 } 74 } 75 76 77 78 79 80 81 class AbstractTest 82 { 83 public static void main(String[] args) 84 { 85 System.out.println("Hello World!"); 86 } 87 } 88 89 90 class Person 91 { 92 private String name; 93 private int age; 94 95 Person(String name,int age) 96 { 97 this.name = name; 98 this.age = age; 99 } 100 public String getName() 101 { 102 return name; 103 } 104 public void setName(String name) 105 { 106 this.name = name; 107 } 108 } 109 class Student extends Person 110 { 111 Student(String name,int age) 112 { 113 super(name,age); 114 } 115 116 } 117 class Worker extends Person 118 { 119 Worker(String name,int age) 120 { 121 super(name,age); 122 } 123 124 }
Java基础九--抽象类