抽象类
包含一个抽象方法的类就叫作抽象类。只声明而未实现的方法叫做抽象方法,抽象方法必须使用abstract关键字声明。
定义规则
- 包含一个抽象方法的类必须是抽象类
- 抽象类和抽象方法都要使用abstract关键字声明
- 抽象方法只需要声明而不需要实现
- 抽象类必须被子类继承,子类(不是抽象类)必须覆写抽象类中的全部抽象方法
格式
abstract class 抽象类名称{
属性;
访问权限 返回值类型 方法名称(参数){
return 返回值;
}
访问权限 abstract返回值类型 方法名称(参数){
//在抽象方法中没有方法体
}
举例:
1 package com.xiaotaotao.code; 2 3 abstract class A{ 4 public static final String FLAG = "CHINA";//全局常量 5 private String name = "肥猫";//定义一个普通的属性 6 public void setName(String name){ 7 this.name = name; 8 } 9 public String getName(){ 10 return this.name; 11 } 12 public abstract void print();//定义抽象方法 13 } 14 class B extends A{//继承抽象类,因为B是普通类,所以必须覆写全部的抽象方法 15 public void print(){ 16 System.out.println("FLAG = " + FLAG); 17 System.out.println("姓名 = " + super.getName()); 18 } 19 } 20 public class AbstractDemo01 { 21 public static void main(String args[]){ 22 B b = new B(); 23 b.print(); 24 } 25 } 26 27 举例: 28 29 package com.xiaotaotao.code; 30 31 32 33 abstract class A{ 34 35 public A(){ 36 37 System.out.println("抽象类A中的构造方法"); 38 39 } 40 41 } 42 43 class B extends A{//继承抽象类,因为B是普通类,所以必须覆写全部的抽象方法 44 45 public B(){ 46 47 super();//也可以通过super明确指定构造方法 48 49 System.out.println("子类B中的构造方法" ); 50 51 } 52 53 } 54 55 public class AbstractDemo01 { 56 57 public static void main(String args[]){ 58 59 B b = new B(); 60 61 } 62 63 }
举例:
1 package com.xiaotaotao.code; 2 3 4 5 abstract class Person01{ 6 7 private String name; 8 9 private int age; 10 11 public Person01(String name , int age){//构造方法 12 13 this.name = name; 14 15 this.age = age; 16 17 } 18 19 public void setName(String name){//void 方法有返回值 20 21 this.name = name; 22 23 } 24 25 public void setAge(int age){ 26 27 this.age = age; 28 29 } 30 31 public String getName(){ 32 33 return name; 34 35 } 36 37 public int getAge(){ 38 39 return age; 40 41 } 42 43 public abstract String getInfo();//定义抽象方法 44 45 } 46 47 class Student01 extends Person01{ 48 49 private String school; 50 51 public Student01(String name , int age , String school){ 52 53 super(name , age); 54 55 this.school = school; 56 57 } 58 59 public void setSchool(String school){ 60 61 this.school = school; 62 63 } 64 65 public String getSchool(){ 66 67 return school; 68 69 } 70 71 public String getInfo(){ 72 73 return "姓名 :" + super.getName() + " 年龄 :" + super.getAge() + " 学校 : " + this.getSchool(); 74 75 } 76 77 78 79 } 80 81 public class AbstractDemo02 { 82 83 public static void main(String args[]){ 84 85 Student01 s = new Student01("肥猫" , 28 , "浙江大学"); 86 87 System.out.println(s.getInfo()); 88 89 } 90 91 } 92