zoukankan      html  css  js  c++  java
  • 抽象类来实现接口

    抽象类和接口都是java中用来实现多态的方法,在此主要说明为什么会用抽象类来实现接口,因此对两者之间的异同就不介绍了。

    在java一般的用法中,如果要用普通类来实现接口,则必须实现该接口中的所有方法,这样就会导致需要实现多余的方法;

    采用抽象类来实现方法,可以实现该接口中的部分方法,而且当其他类继承该抽象类时,只需要实现抽象类中未实现的方法即可。

    例:

      抽象类B只实现了接口A中的方法a、b,

      当类C继承类B时,只需要实现B中为实现的接口c即可。

      一般情况下,类C中的方法a、b都是调用父类B的方法a、b。

    -------------------------------------------- 

    另外:

      接口种没有构造方法,抽象类可以有构造方法。

    转载自狂妄的老头https://www.cnblogs.com/pxffly/p/7565195.html

    如有侵权,联系秒删

    接口代码

    package com.itheima_01;
    
    public interface Jumpping {
        public void jump();
    }
    

     父类

    package com.itheima_01;
    
    public abstract class Animal implements Jumpping {
        public String name;
        public int age;
    
        public Animal() {
        }
    
        public Animal(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
        public abstract void eat();
    
        @Override
        public void jump() {
            System.out.println(name+"在跳高");
        }
    }
    

     子类1

    package com.itheima_01;
    
    public class Cat extends Animal /*implements Jumpping*/ {
        public Cat() {
        }
    
        public Cat(String name, int age) {
            super(name, age);
        }
        /*public void jump() {
            System.out.println("猫跳高");
        }*/
        public void eat() {
            System.out.println("猫吃饭");
        }
    }
    

     子类2

    package com.itheima_01;
    /*implements Jumpping*/
    public class Dog extends Animal  {
        public Dog() {
        }
    
        public Dog(String name, int age) {
            super(name, age);
        }
    
        @Override
        public void eat() {
            System.out.println("狗吃饭");
        }
    
        //@Override
        /*public void jump() {
            System.out.println("狗跳高");
        }*/
    }
    

     测试类

    package com.itheima_01;
    
    public class AnimalDemo {
        public static void main(String[] args) {
           Animal c1 = new Cat();
           c1.setName("汤姆猫");
           c1.eat();c1.jump();
    
            System.out.println("---------------------");
    
           Animal d1 = new Dog();
           d1.setName("大皇狗");
           d1.jump();d1.eat();
    
        }
    }
    
  • 相关阅读:
    医学影像分割之HIP
    c++画分形之Julia集与Mandelbrot集
    趣题一道
    华山论剑常用角点检测与角点匹配方法比较
    改变鼠标样式
    Unity3D Pro 利用摄像头产生俯视地图效果
    unity3D小地图教程
    WebBrowser网址中特殊字符的问题
    打开多个unity3D项目 (项目多开)
    u3d按住鼠标右键才转动摄像机的方法
  • 原文地址:https://www.cnblogs.com/lsswudi/p/11401506.html
Copyright © 2011-2022 走看看