第12章 抽象
抽象:抽象方法和抽象类。
抽象方法将所有具体的事务,抽取成为一些共同的方法。
抽象类是包含抽象的一种类。
本章重点:
1、抽象
2、抽象类的定义和使用
3、抽象和接口的区别
所谓抽象,就是一种建立编程思路的思想。
抽象就是将拥有共同方法和属性的对象提取出来,提取后,重新设计一个更加通用、更加大众化的类,这个类称为抽象类。
抽象就是提取所有对象的共性,即取出共性的过程。
例如一个汽车管理系统中,凡能够证明这是一辆车的特征,就属于抽象范围。
抽象类使用关键字“abstract”来修饰的类。
具有一个或多个抽象方法的类,本身就要被定义为抽象类。
所谓抽象方法就是带关键字“abstract”的方法。
一个类中只要有一个抽象方法,那么这个类是就抽象类。
抽象类是可以继承的:
子类没有实现抽象类的全部抽象方法,那么子类也是抽象类。
子类实现抽象类的全部抽象方法,那么子类就不是抽象类。
含有抽象方法的类一定是抽象类,但抽象类不一定含有抽象方法。
抽象类不能被实例化,即不能使用关键字“new”来生成实例对象,但可以声明一个抽象类的变量指向具体子类的对象。
抽象与接口的区别:
1、都不能创建实例对象,因为它们都是抽象的。
2、虽然不能直接通过关键字“new”创建对象实例,但可声明变量,通过变量指向子类或实现类的对象,来创建对象实例。
不同点:
1、Java不支持多重继承,即一个子类只能有一个父类,但一个子类可以实现多个接口。
2、接口内不能有实例字段,只能有静态变量,抽象类可以拥有实例字段。
3、接口内方法自动设置为“public”的,抽象类中的方法必须手动声明访问控制符。
abstract class school{
String sName;
String cName;
String location;
public void setSName(String sName){
this.sName = sName;
}
public void setCName(String cName){
this.cName = cName;
}
abstract void setlocation(String location);
abstract String getlocation();
public String tostring(){
String info = "学校名称:" + sName + " " + "班级名称:" + cName;
return info;
}
}
class stuA extends school{
void setlocation(String location){
this.location = location;
}
String getlocation(){
return location;
}
public String tostring(){
String info = super.tostring() + " " + "地区:" + location;
return info;
}
}
public class absTest{
public static void main(String[] args){
stuA s1 = new stuA();
s1.setSName("Jamper");
s1.setCName("Tianjin");
s1.setlocation("China");
System.out.println(s1.tostring());
}
}