抽象类与抽象方法

目录

抽象类

抽象类的定义:

抽象类定义格式:

抽象方法:

注意:

抽象类注意点:

题目(多态和继承):


抽象类

抽象类的定义:

一个类被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();
        }
    }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值