抽象类的介绍与标题练习

打印 上一主题 下一主题

主题 863|帖子 863|积分 2589



1. 定义

  • 抽象类是一种不能被实例化的类,在Java中使用 abstract 关键字来声明。抽象类的主要目的是为它的子类提供一个通用的模板,定义一些子类必须实现的方法。
    2. 特点
  • 包含抽象方法:抽象类可以包含抽象方法。抽象方法是只有方法签名而没有方法体的方法,就像上面 Shape 类中的 area() 方法。
  • 不能被实例化:你不能直接创建抽象类的对象。比方, Shape s = new Shape(); 是不合法的。
  • 可以有非抽象方法和成员变量:抽象类除了抽象方法外,还可以有具体的方法(有方法体的方法)和成员变量。
    3. 作用
  • 代码复用:抽象类可以定义一些通用的举动和属性,子类可以继续这些属性和方法,减少代码重复。
  • 定义规范:通过抽象方法,抽象类可以强制子类实现某些方法,保证子类具有某些特定的举动。比方,在图形相干的程序中,全部图形类(如圆形、矩形等)都必须实现计算面积的方法。
标题练习:


PetShop.JAVA
点击查看代码
  1. import java.util.ArrayList;
  2. public class PetShop {
  3.     private ArrayList<Pet> pets;
  4.     public PetShop(){
  5.         pets = new ArrayList<>();
  6.     }
  7.     public void addPet(Pet pet){
  8.         pets.add(pet);
  9.     }
  10.     public void showPets(){
  11.         System.out.println("===宠物展示===");
  12.         for (Pet pet : pets) {
  13.             System.out.println("宠物名字:" + pet.getName() + ",年龄:" + pet.getAge());
  14.         if (pet instanceof Dog) {
  15.             ((Dog) pet) .bark();
  16.         }
  17.         else {
  18.             ((Cat) pet) .mew();
  19.         }
  20.         }
  21.     }
  22. }
复制代码
Pet.JAVA
点击查看代码
  1. public abstract class Pet {
  2.     private  String name;
  3.     private final int age;
  4.     public Pet(String name, int age) {
  5.         this.name = name;
  6.         this.age = age;
  7.         System.out.println("添加了一只宠物,名字:"+getName()+",年龄:"+getAge());
  8.     }
  9.     public  String getName() {
  10.         return name;
  11.     }
  12.     public int getAge() {
  13.         return age;
  14.     }
  15.     public abstract void eat();
  16. }
复制代码
Dog.JAVA
点击查看代码
  1. public class Dog extends Pet{
  2.     public Dog(String name, int age) {
  3.         super(name, age);
  4.     }
  5.     public void eat(){
  6.         System.out.println(getName()+"在吃猫粮");
  7.     }
  8.     public void sit(){
  9.         System.out.println(getName()+"表演了坐下");
  10.     }
  11.     public  void bark(){
  12.         System.out.println(getName()+"的叫声:汪汪!");
  13.     }
  14. }
复制代码
Cat.JAVA
点击查看代码
  1. public class Cat extends Pet{
  2.     public Cat(String name, int age) {
  3.         super(name, age);
  4.     }
  5.     public void eat(){
  6.         System.out.println(getName()+"在吃猫粮");
  7.     }
  8.     public void catchMouse(){
  9.         System.out.println(getName()+"抓到了一只老鼠");
  10.     }
  11.     public  void mew(){
  12.         System.out.println(getName()+"的叫声:喵喵!");
  13.     }
  14. }
复制代码
测试结果

标题代码知识点解析

PetShop类:

使用ArrayList数组存储私有成员变量pets,用于存储宠物对象。addpet()方法用于添加宠物,showPets()方法使用for—each循环遍历获取宠物信息,通过instanceof关键字判断宠物类型并调用相应啼声方法

Pet类:

定义为抽象类,使用abstract关键字修饰,定义了name和age两个私有属性,通过构造函数,用于初始化name和age,通过getName和getAge方法来获取宠物名字和年龄。抽象方法eat,全部继续Pet类的子类都必须实现eat方法。

Cat类:

Cat类继续抽象类Pet。eat()方法重写了基类Pet类中得到eat()方法,目的是体现猫吃猫粮的特定饮食举动,与其他宠物区别开。mew()方法主要是模拟猫发出啼声的举动,在其他地方调用mew方法就会输出宠物名字和啼声。carchMouse()方法是用于模拟猫抓老鼠的动作,调用该方法就会输出相应内容

Dog类:

Dog类继续抽象类Pet。eat()方法重写了基类Pet类中得到eat()方法,目的是体现狗吃狗粮的特定饮食举动,与其他宠物区别开。bark()方法主要是模拟狗发出啼声的举动,在其他地方调用bark方法就会输出宠物名字和啼声。sit()方法是用于模拟狗坐下的动作,调用该方法就会输出相应内容。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表