抽象
来源:互联网 发布: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