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
  • 相关阅读:
    偏最小二乘法回归(Partial Least Squares Regression)
    今天就来聊聊产品运营
    VS2005终于不“变态”了!
    Android 里的对话框Dialog 实现机制基础
    C#多线程操作界面控件的解决方案
    转C++ ,C#数据类型对照
    关于Linq to sql 应用时出现的一个‘row not found or changed’ 异常
    Android之Context Memu
    HttpModule的认识
    Docker:官网文档 Get Started 笔记
  • 原文地址:https://www.cnblogs.com/drq1/p/8466349.html
Copyright © 2011-2022 走看看