抽象类:abstract

1、应用的场景

我们描述一类事物时,存在着某种行为,但这种行为目前不具体,那么我们就可以抽取这种行为的声明,但是不去实现这种行为,我们就需要使用抽象类.

2、抽象的好处

强制要求非抽象的子类一定实现父类抽象的方法

3、抽象类需要注意的细节

1.如果一个函数没有方法体,那么该函数必须要使用抽象来修饰,把该函数修饰成抽象函数
    2.如果一个类中出现抽象函数,那么该类必须使用abstract修饰
    3.如果一个非抽象类继承了抽象类,那么必须实现抽象类的所有抽象函数.
    4.抽象类可以不存在抽象方法(无意义)
            因为抽象类的作用:强制要求非抽象的子类一定实现父类抽象的方法,如果不要抽象方法,name就没意义了
    5.抽象类不能实例化
           为什么抽象类不能实例化呢?
               因为抽象类存在抽象的方法,如果能让抽象类实例化,那么使用抽象的对象就能调用抽象的方法,就毫无意义了;
    6.抽象类是存在着构造函数,其构造函数是提供子类创建对象时初始化父类的的属性;

4、abstract不能与以下几个关键字修饰用一个方法

1.abstract不能与与private修饰同一个方法;
2.abstract不能与static修饰同一个方法;
3.abstract不能与final修饰同一个方法

5、附:常量的命名规范

全部字母都要大写,单词与单词之间 使用下划线分割;

6、抽象类实例

 /*
需求:描述一个图形,圆形,矩形三个类.不管那种图形都具备计算面积和周长的行为,
但是每种图形的计算方式不一样;
*/
abstract class MyShape{ //抽象类
final static double PI=3.14;
String name;
public MyShape(String name){
this.name=name;
}
public abstract void getArea(); //抽象方法
public abstract void getLength(); //抽象方法
} class Circle extends MyShape{
int r;
public Circle(String name,int r){
super(name); //super或者this调用构造时,必须位于第一句.所以super和this不能同在一个构造器中.
this.r=r; //这里不需要,因为这里调用的是属性.
}
public void getArea(){
System.out.println("这是圆形的面积"+(r*r*pi));
}
public void getLength(){
System.out.println("这是圆形的周长"+(2*pi*r));
}
} class Rectangles extends MyShape{
int width;
int length;
public Rectangles(String name,int width,int length){
super(name);
this.width=width;
this.length=length;
}
public void getArea(){
System.out.println("这是矩形的面积"+(width*length));
}
public void getLength(){
System.out.println("这是矩形的周长"+2*(width+length));
}
}
class Demo3{
public static void main(String[] args){
Circle c=new Circle("圆形",5);
c.getLength();
c.getArea();
/*
Rectangles r=new Rectangles("矩形",12,4);
r.getLength();
r.getLength(); */ }
}

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:http://www.cnblogs.com/dshore123/p/8867093.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

 
 
 
G
M
T
 
检测语言
世界语
中文简体
中文繁体
丹麦语
乌克兰语
乌兹别克语
乌尔都语
亚美尼亚语
伊博语
俄语
保加利亚语
僧伽罗语
克罗地亚语
冰岛语
加利西亚语
加泰罗尼亚语
匈牙利语
南非祖鲁语
卡纳达语
印地语
印尼巽他语
印尼爪哇语
印尼语
古吉拉特语
哈萨克语
土耳其语
塔吉克语
塞尔维亚语
塞索托语
威尔士语
孟加拉语
宿务语
尼泊尔语
巴斯克语
布尔语(南非荷兰语)
希伯来语
希腊语
德语
意大利语
意第绪语
拉丁语
拉脱维亚语
挪威语
捷克语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
旁遮普语
日语
格鲁吉亚语
毛利语
法语
波兰语
波斯尼亚语
波斯语
泰卢固语
泰米尔语
泰语
海地克里奥尔语
爱尔兰语
爱沙尼亚语
瑞典语
白俄罗斯语
立陶宛语
索马里语
约鲁巴语
缅甸语
罗马尼亚语
老挝语
芬兰语
苗语
英语
荷兰语
菲律宾语
葡萄牙语
蒙古语
西班牙语
豪萨语
越南语
阿塞拜疆语
阿尔巴尼亚语
阿拉伯语
韩语
马其顿语
马尔加什语
马拉地语
马拉雅拉姆语
马来语
马耳他语
高棉语
齐切瓦语
  世界语
中文简体
中文繁体
丹麦语
乌克兰语
乌兹别克语
乌尔都语
亚美尼亚语
伊博语
俄语
保加利亚语
僧伽罗语
克罗地亚语
冰岛语
加利西亚语
加泰罗尼亚语
匈牙利语
南非祖鲁语
卡纳达语
印地语
印尼巽他语
印尼爪哇语
印尼语
古吉拉特语
哈萨克语
土耳其语
塔吉克语
塞尔维亚语
塞索托语
威尔士语
孟加拉语
宿务语
尼泊尔语
巴斯克语
布尔语(南非荷兰语)
希伯来语
希腊语
德语
意大利语
意第绪语
拉丁语
拉脱维亚语
挪威语
捷克语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
旁遮普语
日语
格鲁吉亚语
毛利语
法语
波兰语
波斯尼亚语
波斯语
泰卢固语
泰米尔语
泰语
海地克里奥尔语
爱尔兰语
爱沙尼亚语
瑞典语
白俄罗斯语
立陶宛语
索马里语
约鲁巴语
缅甸语
罗马尼亚语
老挝语
芬兰语
苗语
英语
荷兰语
菲律宾语
葡萄牙语
蒙古语
西班牙语
豪萨语
越南语
阿塞拜疆语
阿尔巴尼亚语
阿拉伯语
韩语
马其顿语
马尔加什语
马拉地语
马拉雅拉姆语
马来语
马耳他语
高棉语
齐切瓦语
         
 
 
 
文本转语音功能仅限200个字符
 
  选项 : 历史 : 反馈 : Donate 关闭

最新文章

  1. Matlab中cell存储为txt
  2. leetcode36. Valid Sudoku
  3. SQL Server中使用正则表达式
  4. Custom IFormatProvider
  5. Oracle知识整理
  6. 关于hibernate映射过程中的笔记
  7. 将win7电脑变身WiFi热点
  8. Shell test命令
  9. Prime Path(POJ 3126 BFS)
  10. ThinkPHP 3.1 404页面的设置
  11. Unity起步-1.1下载和安装Unity
  12. SQL 逻辑优化 case when 转为 union all
  13. Alpha阶段_团队分数分配
  14. CentOS下部署Jupyter
  15. Xcode快捷键--灰常实用的快捷键,以后编程快捷多了
  16. ajax跨域获取返回值
  17. C#aspx页面前台使用<%=%>无法取到后台的值
  18. 牛客网多校赛第七场--C Bit Compression【位运算】【暴力】
  19. 【手机自动化测试】monkey测试
  20. Codeforces Beta Round #6 (Div. 2 Only) C. Alice, Bob and Chocolate 水题

热门文章

  1. 【BZOJ3437】小P的牧场(动态规划,斜率优化)
  2. Codeforces Round #431
  3. Splay 的区间操作
  4. IPC$入侵大全
  5. C 位段,位域
  6. syntax error: non-declaration statement outside function body
  7. 省选模拟赛 LYK loves string(string)
  8. laravel 5.1 单元测试 Cannot modify header information 错误
  9. struts2验证规则validation配置文件命名方式总结
  10. rabbitmq常见运维命令和问题总结