Java--抽象

Java--抽象

抽象的概念

如果父类当中的方法不确定如何进行{}方法体的实现,那么这就应该是一个抽象方法

image-20230505164924169

抽象方法和抽象类的格式

抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束.

抽象类:抽象方法所在的类,必须是抽象类才行,在class之前写上abstract即可.

image-20230505174625370

代码示例

public abstract class Demo {
    public abstract void method1();//这是一个抽象方法,抽象方法所在的类必须为抽象类

    public void method2() {//普通成员方法
        System.out.println("我是一个普通的成员方法");
    }

}

抽象方法和抽象方法的使用

  1. 不能直接创建new抽象对象

  2. 必须用一个子类来继承抽象父类

  3. 子类必须覆盖重写抽象方法的abstract关键字,然后补上方法体的大括号

  4. 创建子类对象进行使用

    image-20230505195027517

代码示例

抽象类

public abstract class Animal {
    public abstract void eat();//创建抽象类

}

子类

public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("猫喜欢吃鱼");
    }
}

Main方法

public class Main {
    public static void main(String[] args) {
        Cat one = new Cat();
        one.eat();

//        Animal two = new Animal();抽象类不能直接创建对象
    }
}

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

  1. 抽象类不能直接创建对象
  2. 抽象类中可以有构造方法,是提供给子类创建对象时,初始化父类成员使用的
  3. 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类
  4. 抽象类的子类,必须重写父类中的所有的抽象方法

image-20230506095800524

image-20230506100750101

代码示例

Animal类

public abstract class Animal {
    public Animal() {
        System.out.println("父类构造方法执行!!");
    }

    public abstract void eat();

    public abstract void sleep();
}

Dog类

public abstract class Dog extends Animal{
    public Dog()
    {
        System.out.println("子类构造方法执行");
    }
    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }
}

Dog2ha类

public class Dog2ha extends Dog{

    @Override
    public void sleep() {
        System.out.println("哈哈哈----");
    }
}

GoldDog类

public class GoldDog extends Dog {


    @Override
    public void sleep() {
        System.out.println("呼呼呼----");
    }
}

Main类

public class Main {
    public static void main(String[] args) {
        GoldDog one = new GoldDog();
        one.eat();
        one.sleep();
        System.out.println("==========");
        Dog2ha two = new Dog2ha();
        two.eat();
        two.sleep();

    }
}

posted @ 2023-05-06 10:18  harper886  阅读(18)  评论(0编辑  收藏  举报