栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

抽象类,接口,继承

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

抽象类,接口,继承

直接看代码

package 学习;

public class Cat extends Animal{
    @Override
    public void sound() {
        System.out.println("miao");
    }

    public static void main(String[] args) {
        Cat cat = new Cat();//有一个cat对象,会发出miao的声音
//      Animal animal=new Animal(); 但是这句又是什么意思,有一个animal对象,会发出XX的声音
        //有时候我们不行希望Animal被实例化,就把Animal声明abstract抽象类,无法被实例化,只能被继承的子类实例化
        cat.setName("cat");
        cat.sound();
    }
}
package 学习;

 public class Animal {
    public String name;
    public void sound(){
    }

     public void setName(String name) {
         this.name = name;
     }

     public String getName() {
         return name;
     }
 }

抽象类只能由继承的子类来实例化,或者继承的子类继续声明为抽象的

package 学习;

 abstract public class Animal {
    public String name;
    public abstract void sound();//抽象方法

     public void setName(String name) {
         this.name = name;
     }//普通方法

     public String getName() {
         return name;
     }//普通方法
 }

抽象类里可以把包含普通方法和抽象方法,抽象方法就是没有{},没有具体的实现,由继承的子类实现重写方法
但是含有抽象方法的类必须为抽象类
一句话:含有抽象方法的类一定是抽象类,但是抽象类不一定含有抽象方法,也可能是普通方法

这时候我们再声明一个Lion类

package 学习;

public class Lion extends Animal{
    @Override
    public void sound() {
        System.out.println("huhuhu");
    }
    
}

这样Animal下有Lion和cat类,我们可以再添加Dog类,Bird类,然后你会发现,除了Lion,其他都可以作为宠物,宠物含有有Pet这方法,就是可以被抚摸,我们想给除了Lion加上这个方法,有三种办法

  1. 把pet普通方法加入Animal,但是Lion就有了这个方法,但显然这个不是希望被Lion拥有
  2. pet方法设置抽象的加到animal里面,但是这每个子类都必须重写,很麻烦
  3. 有没有一种可能让除了lion的子类继承自一个新的Pet类,但是java不允许继承

记住:单继承多接口
interface

package 学习;

public interface Pet {
    public void pet();
}

package 学习;

**public class Cat extends Animal implements Pet**{
    @Override
    public void sound() {
        System.out.println("miao");
    }

    public static void main(String[] args) {
        Cat cat = new Cat();//有一个cat对象,会发出miao的声音
//      Animal animal=new Animal(); 但是这句又是什么意思,有一个animal对象,会发出XX的声音
        //有时候我们不行希望Animal被实例化,就把Animal声明abstract抽象类,无法被实例化,只能被继承的子类实例化
        cat.setName("cat");
        cat.sound();
    }

    **@Override
    public void pet() {
        System.out.println("miaomiao");
    }
}**

这样就只在需要pet方法的类加上这个接口,然后重写就好了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003430.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号