目录
抽象类
抽象类的定义:
一个类被abstract关键字修饰,那么这个类就是一个抽象类。一个抽象类可以含有或者不含有抽象方法。
抽象类定义格式:
public abstract class 类名字 { }
抽象方法:
使用
abstract
关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。//抽象对象定义格式 没有方法体就是没有大括号{} 修饰符 abstract 返回值类型 方法名 (参数列表);
代码举例:
public abstract void run();
注意:
1.如果一个类包含抽象方法,那么该类必须是抽象类。注意:抽象类不一定有抽象方法,但是有抽象方法的类必须定义成抽象类。
2.继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类(如果子类也声明成抽象类的话,那么该子类其实有点没有什么意义)。
抽象类注意点:
1.抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。
2.抽象类中,可以有构造器,是供子类创建对象时,初始化父类成员使用的。
3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
4.抽象类的子类,必须重写抽象父类中所有的抽象方法,否则子类也必须定义成抽象类,编译无法通过而报错。
5.抽象类存在的意义是为了被子类继承,抽象类体现的是模板思想。
题目(多态和继承):
应用继承和多态的思想,编写动物类,成员方法是动物叫声。写三个具体的类(猫、狗、羊), 它们都是动物类的子类,并重写父类的成员方法。编写测试类,随机产生三种具体动物,调用叫 声这个方法。
定义一个父类Animal类 属性:kind(种类) 方法:创建带参(kind为参数)构造方法 创建cry():void方法
编写三个具体的子类Cat类、Dog类、Sheep类 分别重写父类中的 cry() 方法,输出信息分别为
Cat类:小猫的叫声:喵喵喵~~~
Dog类:小狗的叫声:汪汪汪~~~
Sheep类:小羊的叫声:咩咩咩~~~
编写测试类,首先生成长度为5的父类对象数组,然后通过循环依次向数组中存入数据,现 设定存储规则为:
a) 每次随机产生一个0~2的正整数
b) 若数值为 0,则生成一个 Cat 类的对象,存入数组
c) 若数值为 1,则生成一个 Dog 类的对象,存入数组
d) 若数值为 2,则生成一个 Sheep 类的对象,存入数组 最后循环输出数组成员,并分别调用 cry() 方法。
//Animal类
/*定义一个父类Animal类 属性:kind(种类)
方法:创建带参(kind为参数)构造方法 创建cry():void方法*/
public class Animal {
String kind;
//创建带参(kind为参数)构造方法
public Animal(String kind) {
this.kind = kind;
}
public Animal(){
}
//父类的叫声方法
public void cry(){
}
}
//Cat类
public class Cat extends Animal{
String kind="Cat";
public void cry(){
System.out.println("小猫的叫声:喵喵喵~~~");
}
}
//Dog
public class Dog extends Animal{
String kind="Dog";
public void cry(){
System.out.println("小狗的叫声:汪汪汪~~~");
}
}
//Sheep类
public class Sheep extends Animal{
public void cry(){
System.out.println("小羊的叫声:咩咩咩~~~");
}
}
//Test
/*编写测试类,首先生成长度为5的父类对象数组,
然后通过循环依次向数组中存入数据,现 设定存储规则为:
a) 每次随机产生一个0~2的正整数
b) 若数值为 0,则生成一个 Cat 类的对象,存入数组
c) 若数值为 1,则生成一个 Dog 类的对象,存入数组
d) 若数值为 2,则生成一个 Sheep 类的对象,存入数组 最后循环输出数组成员,
并分别调用 cry() 方法。*/
public class Test {
public static void main(String[] args) {
Animal[] animal = new Animal[5];
Random random = new Random();
int g=0;
for (int i = 0; i <animal.length ; i++) {
g=random.nextInt(3);
switch (g){
case 0:
animal[i] = new Cat();
break;
case 1:
animal[i] = new Dog();
break;
case 2:
animal[i] = new Sheep();
break;
}
}
for (int i = 0; i <animal.length ; i++) {
animal[i].cry();
}
}
}