回顾
八、习题
学习小结
一、抽象类
Java中可以创建一种类专门来做父类,这种类就是抽象类。
1.抽象类的基本概念
抽象方法是只声明而为实现的方法,且必须使用abstract关键字声明,包含抽象方法的类也必须用abstract class声明。
抽象类定义规则:
(1) 抽象类和抽象方法都必须用abstract关键字来修饰;
(2) 抽象类不能直接实例化,即不能直接通过new来产生对象;
(3) 抽象类定义时抽象方法只需声明,而不需要实现;
(4) 含抽象方法的类必须被声明为抽象类,抽象类的子类必须覆写所有的抽象方法后才能被实例化,否则此子类还是抽象类。
语法:
abstract class 类名称{
声明数据成员;
访问权限 返回值的数据类型 方法名称(参数···){
// 定义一般方法
}
abstract 返回值的数据类型 方法名称(参数···); // 定义抽象方法里没有定义方法体
}
例如:
abstract class Book {
private String title = "Java开发"; // 属性
public void print() { // 普通方法,有“{}”表示方法体
System.out.println(title);
}
public abstract void fun(); // 没有方法体,是一个抽象方法
}
抽象类使用原则:
抽象类必须有子类,子类使用extends继承,一个子类只能继承一个抽象类;
子类(若不是抽象类)则必须覆写抽象类之中的全部抽象方法;
如果要想实例化抽象类的对象,则可以使用子类进行对象的向上转型来完成。
package com.Javastudy2;
/**
* @author Y.W.
* @date 2017年9月9日 下午11:44:07
* @Description TODO 抽象类的使用
*/
public class P323_13_1 {
public static void main(String[] args) {
Student11 s = new Student11("张三", 20, "学生"); // 创建Student类对象s
Worker w = new Worker("李四", 30, "工人"); // 创建Worker类对象w
System.out.println(s.talk()); // 调用被覆写的方法
System.out.println(w.talk());
}
}
abstract class Person22 { // 定义一个抽象类Person
String name;
int age;
String occupation;
public abstract String talk(); // 声明一个抽象方法talk()
}
class Student11 extends Person22 { // Student类继承自Person类
public Student11(String name, int age, String occupation) {
this.name = name;
this.age = age;
this.occupation = occupation;
}
public String talk() { // 覆写抽象方法talk()
return "学生--》姓名:" + this.name + ",年龄:" + this.age + ",职业:" + this.occupation + "!";
}
}
class Worker extends Person22 { // Worker类继承自Person类
public Worker(String name, int age, String occupation) {
this.name = name;
this.age = age;
this.occupation = occupation;
}
public String talk() { // 覆写抽象方法talk()
return "工人--》姓名:" + this.name + ",年龄:" + this.age + ",职业:" + this.occupation + "!";
}
}
运行结果:
图示:
思考
终于学到抽象类啦。
记于2017年9月10日夜