zoukankan      html  css  js  c++  java
  • 一、抽象类和接口

    一、类中声明一个方法,这个方法没有实现体,是一个空方法,这样的方法叫抽象方法,使用abstract修饰符号

    当一个类有抽象方法时候,必须声明为抽象类

    1.声明一个父类(父类类声明一个抽象方法,则父类必须声明为抽象类abstract修饰)

    package property;
    //为Hero增加一个抽象方法,必须把Hero声明为abstract。
    public abstract class Hero{
        String name;
        float hp;
        float armor;
        int moveSpeed;
        
        public static void main(String[] args){
        }
        //抽象方法attack
        //Hero的子类会被要求实现attack方法
        public abstract void attack();
    }
    View Code

    2.子类一

    package property;
    public class ADHero extends Hero{
        public void physicAttack(){
            System.out.println("进行物理攻击");
        }
        @Override
        public void attack(){//继承父类的同事,必须实现父类里的抽象类
            physicAttack();
        }
    }
    View Code

    3.子类二

    package property;
    public class APHero extends Hero{
        public void magicAttack(){
            System.out.println("进行魔法攻击");
        }
        @Override
        public void attack(){//继承父类的同事,必须实现父类里的抽象类
            magicAttack();
        }
    }
    View Code

    二、类可以在不提供抽象方法的前提下,直接声明为抽象类。但是一旦被声明为抽象类,就不能狗直接实例化。

    public class Hero extends Object{
        String name;
        float hp;
        float armor;
        int moveSpeed;
        
        public static void main(String[] args){
    //虽然没有抽象方法,但是被声明了抽象类,不能进行实例化操作。
            Hero h=new Hero();
        }
    }
    View Code

    三、抽象类和接口的区别

    子类只能继承一个抽象类,也印证了java只能单继承

    子类可以继承多个接口

    抽象类可以定义为public,protected,package,private,有静态属性,非静态属性,final和非final属性

    接口中的属性只能是public,静态,final的

    package property;
    public interface AD{
        public static final int moveSpeed=100;
        float hp;//hp没有显式声明为public static final,但是它默认就是这个
        public void magicAttack();
        int moveSpeed();//方法没有显式声明为public,接口中默认方法为public
    }
    View Code
  • 相关阅读:
    第十二周作业
    第十一周作业
    第十周作业
    第九周作业*
    #**第八周作业+预习作业**
    第七周作业
    Linux 日志查看常用命令
    Linux tar命令
    Java 数组
    设计模式 观察者模式(Observer)
  • 原文地址:https://www.cnblogs.com/drq1/p/8466349.html
Copyright © 2011-2022 走看看