• JavaSE 基础 第36节 抽象类概述与使用


    2016-06-29

    1 抽象类的定义

    抽象类是为子类提供一个规范。

    修饰符 abstract 类名{
    //类体
    修饰符 abstract 返回值类型 方法名(参数列表);
    }

    抽象方法没有方法体:public abstract void test();
    普通方法有方法体: public void test(){//方法体内的代码};

    1、定义一个类,如果这个类是抽象类,那么这个类中至少有一个抽象方法。
    2、抽象类的方法不一定是抽象方法,但是含义抽象方法的类一定是抽象类。

    package com.java1995;
    /**
     * 抽象类:猫科动物类
     * @author Administrator
     *
     */
    public abstract class Feline {
        /**
         * 封装
         */
        private int legCount=4;//定义腿的数量
        private String headShape="round";//定义脑袋的形状
        private boolean meatEater=true;//定义是否为食肉动物,默认为是
        
        /**
         * 抽象方法:捕食
         * @param animal
         */
        public abstract void catchAnimal(Animal animal);
        
        /**
         * 普通方法:叫喊
         */
        public void cry(){
            System.out.println("动物在狂吼");
        }
        
        /**
         * 封装的实现
         * @return
         */
        public int getLegCount() {
            return legCount;
        }
    
        public void setLegCount(int legCount) {
            this.legCount = legCount;
        }
    
        public String getHeadShape() {
            return headShape;
        }
    
        public void setHeadShape(String headShape) {
            this.headShape = headShape;
        }
    
        public boolean isMeatEater() {
            return meatEater;
        }
    
        public void setMeatEater(boolean meatEater) {
            this.meatEater = meatEater;
        }
    
    }

    2 抽象类的使用

    package com.java1995;
    /**
     * 父类、被被捕食类:动物类
     * @author Administrator
     *
     */
    public class Animal {
    
    }
    package com.java1995;
    
    /**
     * 子类、被被捕食类:老鼠类
     * @author Administrator
     *
     */
    public class Mouse extends Animal {
    
    }
    package com.java1995;
    /**
     * 抽象类的子类:老虎
     * @author Administrator
     *
     */
    public class Tiger extends Feline{
        
        /**
         * 重写抽象方法:老虎的捕食
         */
        @Override
        public void catchAnimal(Animal animal) {
            // TODO Auto-generated method stub
            System.out.println("老虎在捕食");
            
        }
        
        public static void main(String[] args) {
            Mouse mouse=new Mouse();
            Tiger t=new Tiger();
            t.catchAnimal(mouse);
        }
    
    }

    package com.java1995;
    /**
     * 抽象类的子类:猫
     * @author Administrator
     *
     */
    public class Cat extends Feline{
        
        /**
         * 重写抽象方法:猫的捕食
         */
        @Override
        public void catchAnimal(Animal animal) {
            // TODO Auto-generated method stub
            //首先要判断捕食的animal是否为老鼠,如果是,可以捕食
            if(animal instanceof Mouse){
                System.out.println("猫正在捕食老鼠");
            }else{
                System.out.println("猫不能捕食它");
            }
        }
        
        public static void main(String[] args) {
            Mouse mouse =new Mouse();
            Cat cat=new Cat();
            cat.catchAnimal(mouse);
        }
    
    }

     @Override 用来检测是否重写成功。
    1、一个类继承了抽象类,就必须重写该抽象类的所有抽象方法。
    2、如果有一个类没有重写抽象类的抽象方法,那么这个类也要定义为抽象类。

    package com.java1995;
    /**
     * 抽象方法类
     * @author Administrator
     *
     */
    public abstract class Test {
        /**
         * 抽象方法
         */
        public abstract void test1();
        public abstract void test2();
    
    }
    package com.java1995;
    /**
     * 抽象方法类的子类
     * @author Administrator
     *
     */
    public class SubTest extends Test{
    
        /**
         * 一个类继承了抽象类,就必须重写该抽象类的所有抽象方法
         *  @Override用来检测是否重写成功。
         */
        @Override
        public void test1() {
            // TODO Auto-generated method stub
            System.out.println("方法1");
            
        }
    
        @Override
        public void test2() {
            // TODO Auto-generated method stub
            System.out.println("方法2");
    
        }
    }
    package com.java1995;
    /**
     * 如果有一个类没有重写抽象类的抽象方法,那么这个类也要定义为抽象类
     * @author Administrator
     *
     */
    public abstract class AbstractTest1 {
        public abstract void test();
        
        public void test2(){
            System.out.println("这是普通方法");
        }
    
    }

    【参考资料】

    [1] Java轻松入门经典教程【完整版】

  • 相关阅读:
    Docker制作tomcat镜像,发布镜像
    DockerFile
    Docker容器数据卷
    Docker镜像
    Docker部署nginx,tomcat,es,可视化
    java 使用 poi 更新 ppt 中图表的数据
    require.js与IDEA的配合
    html中require.config 缓存问题
    mongodb 更新嵌套数组的值
    java poi ppt 接口的基本操作
  • 原文地址:https://www.cnblogs.com/cenliang/p/5627740.html
Copyright © 2020-2023  润新知