基本含义
抽象类
语法:public abstract class 类名{ 类体}
项目 | 含义 |
---|---|
含义 | 使用abstract修饰的类。 |
类作用 | 作为子类的通用模板 |
成员 | 同普通类,只是可以加入抽象方法。 |
特点 | 不能被实例化,但可使用多态方式。 |
abstract | 不能与private和static连用。 |
抽象类有两种种类:
种类一:无抽象方法的抽象类
public abstract class Animal1{
// 构造函数。
public Animal1(){
}
public Animal1(String name, int age){
this.name = name;
this.age = age;
}
// 成员变量:
String name;
int age;
// 普通方法:
public void eat(){
System.out.println("所有的动物都需要吃东西!");
}
public void life(){
System.out.println("一般的动物的寿命并不长!");
}
}
种类二:有抽象方法的抽象类。
public abstract class Animal2{ // 注意:同一源文件中,不可出现两个public修饰的类。
// 构造函数。
public Animal2(){
}
public Animal2(String name, int age){
this.name = name;
this.age = age;
}
// 成员变量:
String name;
int age;
// 普通方法:
public void eat(String name){
System.out.println("所有的动物都需要吃东西!");
}
public void life(){
System.out.println("一般的动物的寿命并不长!");
}
// 抽象方法:无具体内容,只是在父类中声明,子类必须使用。
public abstract void work(); //
}
猫类:继承Animal1
// 普通类:
public class Cat extends Animal1{
public Cat(){
}
public Cat(String name, int age){
super(name,age);
}
// 重写:子类重写父类方法。
public void eat(){
System.out.println(name + "喜欢吃鱼!");
}
}
狗类:继承Animal2
// 普通类:
public class Dog extends Animal2{
public Dog(){
}
public Dog(String name, int age){
super(name,age);
}
// 重写:子类重写父类方法。
public void eat(){
System.out.println(name + "喜欢啃骨头!");
}
// 抽象方法的使用:相当于重写父类。
public void work(){
System.out.println(name + "的工作是看家护院!");
}
}
主函数入口类:
public class MainEntrance{
public static void main(String[] args){
Cat cat = new Cat();
Dog dog = new Dog(); // 子类引用指向子类对象。
Animal1 cat1 = new Cat(); // 普通父类引用指向子类对象。
Animal2 Dog1 = new Dog(); // 抽象类引用指向子类对象。
}
}
抽象方法
语法:public abstract 数据类型 方法名
项目 | 含义 |
---|---|
含义 | 使用abstract修饰的方法。 |
类作用 | 规范子类的必须调用该方法。 |