Java面向对象-抽象类
定义:在java中,含有抽象方法的类称为抽象类,同样不能生成对象;
注意点:
1,包含一个抽象方法的类是抽象类;
2,抽象类和抽象方法都要用abstract关键字修饰;
3,抽象方法只需要声明而不需要实现;
4,抽象类必须被子类继承,(假如不是抽象类)必须重写抽象父类中的全部抽象方法;
5,抽象类不能被实例化;
我们先来定义一个抽象类:
1 package com.java1234.chap03.sec11; 2 3 /** 4 * 定义一个抽象类People 5 * @author user 6 * 7 */ 8 public abstract class People { 9 10 private String name; 11 12 public String getName() { 13 return name; 14 } 15 16 public void setName(String name) { 17 this.name = name; 18 } 19 20 public void say(){ 21 System.out.println("我的姓名是:"+this.getName()); 22 } 23 24 /** 25 * 定义一个抽象方法 职业 让子类去具体实现 26 */ 27 public abstract void profession(); 28 29 }
抽象类,定义一个属性name 以及方法say() 再定义一个抽象方法 profession 具体实现让子类去实现;
我们搞一个测试类:
我么尝试下实例化下People类:
我们会看到 编译出错,不能实例化People类;
我们定义一个Student类,以及一个Teacher类:
1 package com.java1234.chap03.sec11; 2 3 public class Student extends People{ 4 5 @Override 6 public void profession() { 7 System.out.println("职业是:学生"); 8 } 9 10 }
1 package com.java1234.chap03.sec11; 2 3 public class Teacher extends People{ 4 5 @Override 6 public void profession() { 7 System.out.println("职业是:老师"); 8 } 9 10 }
我们搞一个测试类:
1 package com.java1234.chap03.sec11; 2 3 public class Test { 4 5 public static void main(String[] args) { 6 7 Student student=new Student(); 8 student.profession(); 9 10 Teacher teacher=new Teacher(); 11 teacher.profession(); 12 13 } 14 }
运行输出:
职业是:学生
职业是:老师