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

“21 天好习惯”第一期-9

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

“21 天好习惯”第一期-9

今天复习了一下以前学习过的Java基础知识

抽象类和抽象方法 什么是抽象类和抽象方法?

 废话不多说,直接上代码

抽象类Animal

public abstract class Animal {
    public abstract void eat(); //这就是一个抽象方法,表示吃东西,具体吃什么不确定
    public void method(){} //这是普通的成员方法
}
抽象类和抽象方法的使用

抽象类Animal

public abstract class Animal {
    public abstract void eat(); //这就是一个抽象方法,表示吃东西,具体吃什么不确定
    public void method(){} //这是普通的成员方法
}

Dog类

public class Dog extends Animal{
    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }
}

Main类

public class Main {
    public static void main(String[] args){
        //Animal animal = new Animal(); //错误写法,不能直接创建抽象类对象
        Dog dog = new Dog(); //创建抽象类Animal的子类Dog对象
        dog.eat(); //运行结果:狗吃骨头
    }
}

运行结果

抽象类和抽象方法的注意事项

1.抽象类不能创建对象

2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的

Fu抽象类

public abstract class Fu {
    public Fu(){
        System.out.println("我是抽象父类构造方法");
    }
    public abstract void eat();
}

Zi类

public class Zi extends Fu{
    public Zi(){
        //这里有默认的super()
        System.out.println("我是子类构造方法");
    }
    @Override
    public void eat() {
        System.out.println("吃饭");
    }
}

Main类

public class Main {
    public static void main(String[] args) {
        Zi zi = new Zi();
        zi.eat();
    }
}

 运行结果

 3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类

MyAbstract类

//一个抽象类不一定含有抽象方法
public abstract class MyAbstract {
}

4.抽象类的子类,必须重写抽象父类中所有的抽象方法,当然你也可以让该子类成为抽象类

Animal抽象类

public abstract class Animal {
    public abstract void eat();  //吃
    public abstract void cry();//叫
}

Dog抽象类

//这里我只重写抽象父类的eat()抽象方法,不想重写cry()方法,那么你就必须把这个类变为抽象类
public abstract class Dog extends Animal{
    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }
}

GoldenDog类

//因为Dog是抽象类而GoldenDog不是抽象类,所以必须重写Dog中的抽象方法,也就是Dog没有重写的抽象父类的抽象方法,已经重写的就不用了
public class GoldenDog extends Dog{
    @Override
    public void cry() {
        System.out.println("wuwuwu");
    }
}

HuskyDog类

//因为Dog是抽象类而HuskyDog不是抽象类,所以必须重写Dog中的抽象方法,也就是Dog没有重写抽象父类的抽象方法,已经重写的就不用了
public class HuskyDog extends Dog{
    @Override
    public void cry() {
        System.out.println("enenen");
    }
}

Main类

public class Main {
    public static void main(String[] args) {
        //Animal animal = new Animal(); //不可以直接new对象,Animal是抽象类
        //Dog dog = new Dog(); //不可以直接new对象,Dog是抽象类

        GoldenDog goldenDog = new GoldenDog(); //可以直接new对象,GoldenDog是普通类
        goldenDog.eat();
        goldenDog.cry();

        System.out.println("---------------------");

        HuskyDog huskyDog = new HuskyDog(); //可以直接new对象,HuskyDog是普通类
        huskyDog.eat();
        huskyDog.cry();
    }
}

运行结果

在不断学习的过程中,不妨回过头去看看以前学的一些基础知识,你会有不一样的收获,比如我,刚开始学Java基础知识时,抽象类和抽象方法我就挺懵逼的,现在再回过头看一遍,一下子就通了。由于时间有限,今天我就只写这一点,还有很多我都想自己亲自写一遍,有时间了必定与大家分享

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

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

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