1.抽象类 抽象类的目的是标志处某些类不能被初始化出来,只能被继承和产生多态,例如Animal是动物类,没有初始化的必要,动物是什么?什么动物?。通过关键字 abstract关键字标识抽
1 public abstract class Person { 2 public abstract void eat(); 3 public abstract void print(); 4 } 5 class man extends Person{ 6 public void eat() { 7 System.out.println("man"); 8 } 9 public void print() { 10 System.out.println("man"); 11 } 12 public void solo() { 13 System.out.println("男人"); 14 } 15 } 16 class woman extends Person{ 17 public void eat() { 18 System.out.println("woman"); 19 } 20 public void print() { 21 System.out.println("man"); 22 } 23 public void show() { 24 System.out.println("女人"); 25 } 26 } 27 28 public class PersonText { 29 public static void main(String[] args) { 30 personManner per=new personManner(); 31 man ma=new man(); 32 woman wo=new woman(); 33 per.peek(ma); 34 per.peek(wo); 35 } 36 } 37 class personManner{ 38 public void peek(Person pe) { 39 if (pe instanceof man) { 40 ((man) pe).solo(); 41 } 42 if (pe instanceof woman) { 43 ((woman)pe).show(); 44 } 45 pe.eat(); 46 pe.print(); 47 } 48 }
6.注意要点 抽象类:通过abstract修饰类(与final不能够同时出现) 特点:1.抽象类不能被实例化 2.抽象类中可以有构造器(构造器是为了给子类用,子类的构造方法会用到) 3.抽象类可以出现抽象方法,也可以出现非抽象方法 4.抽象类有构造器,但是不能被实例化// 契合面向对象的思想,抽象类没有实际对象所以不能实例化。 5.抽象类中的具体方法可以通过子类的继承关系,用子类对象调用,或者将抽象类中具体的方法用static修饰,然后可以直接用类名调用 抽象方法:通过abstract修饰的方法 特点:1.抽象方法不能有方法体 2.抽象方法必须被子类重写(除非子类的方法也是抽象方法) 3.抽象方法不能用private修饰,因为抽象方法就是用来被继承的,如果被private修饰就不能被子类继承了 4.抽象方法也不能用static修饰,因为抽象方法没有方法体,没有实际意义,调用就没有意义,如果用static修饰,虽然抽象类不能实例化对象,但是用static修饰之后可以直接用类名调用。