时间:2016-12-08----10:41:00
抽象类:主要作用----->封装
在使用抽象类时需要注意几点:
1、抽象类不能被实例化(像刚才的动物,实例化是没有任何意义的),实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。
2、抽象方法必须由子类来进行重写。
3、如果类中包含抽象方法,该类必须要定义成抽象类,不管是否还包含有其他方法。
4、抽象类中可以包含具体的方法,当然也可以不包含抽象方法。
5、子类中的抽象方法不能与父类的抽象方法同名。
6、abstract不能与final并列修饰同一个类。
7、abstract 不能与private、static、final或native并列修饰同一个方法。
对多肽的理解:
多肽的三个含义:1)子类都能以父类的身份出现
2)子类以父类的身份出现,但是做事情时,还是用自己的方式来实现。
3)子类以父类的身份出现时,自己特有的属性和行为将不能被使用。
(来自百度百科)
实例:
1 package SecondWeekSixthDay; 2 //对多肽的学习 3 4 //抽象类 5 abstract class Animal { 6 abstract void eat();//抽象方法 7 } 8 9 //子类 10 class Cat extends Animal{ 11 public void eat(){/*必须继承父类的抽象方法*/ 12 System.out.println("猫吃鱼"); 13 } 14 public void catchMouse(){/*子类自身独有的方法*/ 15 System.out.println("抓老鼠"); 16 } 17 } 18 19 class Dog extends Animal{ 20 public void eat(){ 21 System.out.println("吃骨头"); 22 } 23 public void catchMouse(){ 24 System.out.println("看家"); 25 } 26 } 27 28 class Pig extends Animal{ 29 public void eat(){ 30 System.out.println("睡觉"); 31 } 32 void sleep(){ 33 System.out.println("睡觉"); 34 } 35 } 36 37 38 39 /*相当于测试类*/ 40 public class DuoTaiDemo{/*方法体*/ 41 public static void main(String[] args){/*main函数入口*/ 42 43 Animal animal=new Cat();/*作用:调用其他类来定义成一个新类*/ 44 animal.eat();/*调用这个类的eat方法*/ 45 //animal.catchMouse();/*因抽象类没有这个方法,因此无法调用*/ 46 //Cat();/*不能使用调用方法。因方法体中不存在Cat方法*/ 47 48 Animal animal2=new Dog(); 49 animal2.eat(); 50 51 Animal animal3=new Pig(); 52 animal3.eat(); 53 } 54 55 56 }