一..抽象类的基本语法:
1.在面向对象过程中类是抽象的,类对象是具体的。
2.只有函数的定义,没有函数体的函数被称为抽象函数:
abstract void fun();
abstract //摘要
3.什么是抽象类(基类)
在java中,用abstract关键字来修饰一个类时,这个类叫抽象类。
1)抽象类不能够生成对象;
2)如果一个类当中包含有抽象函数,那么这个类必须被声明为抽象类。
3) 如果一个类当中没有抽象函数,那么这个类也可以被声明为抽象类。
4)抽象类是用来当父类,它的子类可以用来事先,抽象类一般称为基类,是用来继承的。
5)a.抽象类不能生成对象;
b.构造函数用于生成类的对象。抽象类可以通过子类的对象调用抽象类的构造函数。
c.抽象类不能生成对象,但是可以拥有构造函数。
6)abstract类只关心它的子类是否具有某种功能,并不关心该功能的具体实现,功能的具体行为由子类负责实现。
7)用abstract来修饰一个方法时,该方法叫做抽象方法。与final类和方法相反,abstract类必须被继承。abstract方法必须被重写。
二.抽象类的例子:
1.定义一个抽象类Person.java
abstract class Person{
String name;
int age;
Person(){ //构造函数不带返回值
System.out.println("Person 的构造函数");
}
Person(String name, int age){
this.name = name;
this.age = age;
System.out.println("name :=" + name + "age :=" +age);
}
void introduce(){
System.out.println("我的名字是" + name + "我的年龄是:" + age);
}
abstract void eat(); //抽象方法
}
2.继承抽象类Person的子类 Sdutent.java
class Sdutent extends Person{ //抽象类继承也使用 extends关键字
String address;
Sdutent(){
super(); //父类Person的构造函数
System.out.println("Sdutent 的构造函数");
}
Sdutent(String name, int age,String address){
super(name, age);//调用抽象类的构造函数
this.address = address;
}
//复写父类当中的eat的抽象方法
void eat(){
System.out.println("Sdutent 筷子!");
}
}
3.执行的类 Test.java
class Test{
public static void main(String args[]){
//Person p = new Person();
//p.introduce(); //抽象类不能生成对象,无法调用抽象方法。
//Sdutent s= new Sdutent();
//s.introduce();
Person p = new Sdutent(); //向上转型
p.eat();
}
}