抽象

抽象类:对现实世界一种类型的多种实体的统一抽象定义。
具体类:一种实体的抽象描述。
具体类再抽象就是抽象类。

抽象类:某些方法的实现因为子类的不同而不同,故可以在父类中声明抽象方法,交由子类具体实现这些方法。

抽象类
1.使用abstract修饰
2.子类必须重写全部抽象方法(实现),若是部分没有实现就还是抽象类。
3.抽象方法必须在抽象类中
4.抽象方法只有方法的声明,没有方法的实现,最后以;结束
5.抽象类不能被实例化
6.不能用abstract修饰属性,私有方法,构造器,静态方法,final方法

抽象类比普通类多一个抽象方法(普通类具有的其他东西它都有)

抽象类代码练习:

public abstract class Pet {

    private String name;
    private int age;
    private double weight;

    public Pet() {}
    public Pet(String name, int age, double weight) {
        this.name = name;
        this.age = age;
        this.weight = weight;
    }

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

    public void setAge(int age) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }
    public double getWeight() {
        return weight;
    }

    @Override
    public String toString() {
        return "昵称:" + name + ",年龄:" + age + ",体重:" + weight;
    }
    //抽象方法
    public abstract void speak();
    public abstract void eat();
}
public class Bird extends Pet {

    private int flySpeed;

    public Bird() {}
    public Bird(String name, int age, double weight, int flySpeed) {
        super(name, age, weight);
        this.flySpeed = flySpeed;
    }

    public void setFlySpeed(int flySpeed) {
        this.flySpeed = flySpeed;
    }
    public int getFlySpeed() {
        return flySpeed;
    }

    @Override
    public String toString() {
        return super.toString() + ",飞行速度:" + flySpeed;
    }

    //实现抽象方法
    @Override
    public void speak() {
        System.out.println("吱吱吱......");
    }
    @Override
    public void eat() {
        System.out.println("吃虫子......");
    }

}
public class Dog extends Pet {

    private String type;

    public Dog() {}
    public Dog(String name, int age, double weight, String type) {
        super(name, age, weight);
        this.type = type;
    }

    public void setType(String type) {
        this.type = type;
    }
    public String getType() {
        return type;
    }

    @Override
    public String toString() {
        return super.toString() + ",品种:" + type;
    }

    @Override
    public void speak() {
        System.out.println("汪汪汪...");
    }

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

    private String color;

    public Cat() {}
    public Cat(String name, int age, double weight, String color) {
        super(name, age, weight);
        this.color = color;
    }

    public void setColor(String color) {
        this.color = color;
    }
    public String getColor() {
        return color;
    }

    @Override
    public String toString() {
        return super.toString() + ",颜色:" + color;
    }

    @Override
    public void speak() {
        System.out.println("喵喵喵...");
    }

    @Override
    public void eat() {
        System.out.println("吃鱼...");
    }
}
public class PetTest {

    public static void main(String[] args) {

        Pet[] p = new Pet[6];
        //String name, int age, double weight, String color
        //String type
        //int flySpeed
        p[0] = new Cat("小花", 2, 3.5, "花色");
        p[1] = new Cat("小黑", 1, 2.7, "黑色");
        p[2] = new Dog("大黑", 3, 20, "哈士奇");
        p[3] = new Dog("大黄", 5, 40, "家狗");
        p[4] = new Bird("咕咕", 1, 1, 20);
        p[5] = new Bird("唧唧", 1, 0.5, 30);

        for(int i = 0; i < p.length - 1; i++) {

            for(int j = 0; j < p.length - 1 - i; j++) {

                if (p[j].getWeight() < p[j + 1].getWeight()) {

                    Pet temp = p[j];
                    p[j] = p[j + 1];
                    p[j + 1] = temp;
                }
            }
        }

        for(Pet pv : p) {
            System.out.println(pv);
        }
    }
}

加油!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值