/**
* abstract关键字的使用
* 1.abstract抽象的
* 2.abstract可以修饰的结构:类、方法
* 3.abstract修饰类:抽象类
* >此类不能实例化
* >抽象类中一定是有构造器的,只是自己不能调用来创建对象了,但是子类还需要用的。
* 开发中,都会提供抽象类的子类,让子类对象实例化,完成相关操作。
*
* 4.abstract修饰方法:抽象方法
* >抽象方法只有方法的声明,没有方法体
* >包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象方法。
* >若子类重写父类中的所有抽象方法后,此子类方可造对象。
* 若子类没有重写父类中的所有抽象方法,则此子类必须也声明为抽象类,否则会报错。
*
*/
1 package com.fu.java1; 2 3 4 public class AbstractTest { 5 public static void main(String[] args) { 6 //一旦Person类抽象了,就不可实例化 7 // Person p1 = new Person(); 8 // p1.eat(); 9 } 10 } 11 12 abstract class Creature{ 13 public abstract void breath(); 14 15 } 16 17 abstract class Person extends Creature{ 18 String name; 19 int age; 20 21 public Person(){ 22 23 } 24 public Person(String name,int age){ 25 this.name = name; 26 this.age = age; 27 } 28 29 //不是抽象方法 30 // public void eat(){ 31 // 32 // } 33 34 //这才是抽象方法 35 abstract public void eat(); 36 37 public void walk(){ 38 System.out.println("人走路"); 39 } 40 } 41 42 class Student extends Person{ 43 public Student(String name,int age){ 44 super(name, age); 45 } 46 47 public void eat(){ 48 System.out.println("学生应该吃有营养的食物"); 49 } 50 51 @Override 52 public void breath() { 53 System.out.println("学生应该多呼吸新鲜的空气"); 54 } 55 }