抽象

来源:互联网 发布:mac怎么删除文件夹 编辑:程序博客网 时间:2024/04/29 06:31

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

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

抽象类
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);        }    }}

加油!

2 0
原创粉丝点击