抽象方法用abstract修饰,没有方法体,大括号{}也没有,包含抽象方法的类必须是抽象类;
抽象类是不完整的类,因为它没有方法体,不能new对象
抽象类不能被实例化(new对象)
抽象类是要被继承的,一定要有子类
在派生类将抽象方法重写
pulic abstract Class Seaobject {
SeaObject o=new SeaObject() ;//创建Seaobject对象,没有方法体报错。
SeaObject []arr=new SeaObject[3];//创建Seaobject数组对象
}
抽象方法的意义和疑问:
抽象方法存在的意义:
保证当向上造型时,通过超类的引用能点出来那个方法中
既然意义仅在于能点出来,那为什么不设计普通方法呢?
若设计为普通方法,则派生类可以重写也可以不重写,很可能忘记;
若设计抽象方法,则可以强制派生类必须重写---做了标准,强制必须重写
路径选择
http://localhost:8088/myweb/login.html
action="myweb/login" 最开始没有"/",则这是一个相对路径,默认前面是"./",即:当前目录,指的是地址栏路径中抽象路径部分的最后一个"/"
此时浏览器提交表单是的请求路径为:
http://localhost:8088/myweb/myweb/login
服务端解析请求后得到的请求路径就是:/myweb/myweb/login
此时和UserController的login方法上注解@RequestMapping("myweb/login")上的参数匹配时是不成功的!!
http://localhost:8088/myweb/login.html
action="/myweb/login" 最开始有"/",则这是一个绝对路径,这个"/"表示的位置是地址栏中抽象路径中的第一个"/"位置
此时浏览器提交表单是的请求路径为:
http://localhost:8088/myweb/login
服务端解析请求后得到的请求路径就是:/myweb/login
此时和UserController的login方法上注解@RequestMapping("/myweb/login")上的参数匹配就可以成功!!