Java学习之抽象类
来源:互联网 发布:数控车床内螺纹编程 编辑:程序博客网 时间:2024/06/10 11:17
抽象类概述:
前面所讲的猫狗案例中,提取出了一个动物类,也创建了具体的动物对象,但其实是不对的。如果我说动物,你就不知道我具体说的是什么动物,只有给了具体的动物类你才知道是什么动物,所以说动物不是一个具体的事物,而是一个抽象的事物。只有真正的猫狗才是具体的事物,同样的,不同的动物吃的东西也是不同的,所以我们不应该在动物类中给出具体实现,而是应该给出一个声明即可。在Java中,一个没有方法体的方法应该被定义为抽象方法,而类中如果有抽象方法,则该类必须定义为抽象类。
抽象类的特点:
1、抽象类和抽象方法必须用abstract关键字修饰
2、抽象类中不一定有抽象方法,但有抽象方法的类必须定义为抽象类
3、抽象类不能实例化
(因为它不能具体的
抽象类有构造方法,但是不能实例化,那构造方法的作用是用于子类访问父类数据的初始化)
4、抽象类的子类
A:如果不想重写抽象方法,那么该子类是一个抽象类。
B:重写所有的抽象方法,这个时候子类是一个具体的类。
抽象类的 实例化其实是靠具体的子类实现的,是多态的方式
Animal a=new Cat();
实例:
抽象类的成员特点:
成员变量:既可以是变量,也可以是常量
构造方法:有,用于 子类访问父类数据的初始化
成员方法:既可以是抽象的,也可以是非抽象的。
抽象类的成员方法特性:、
A:抽象方法 强制子类做的事情
B:非抽象方法 子类继承的事情,提高代码的复用性
实例:
猫狗案例:
具体事物:猫、狗
共性:姓名 年龄 吃饭
分析:从具体到抽象
猫:
成员变量:姓名 年龄
构造方法:无参 带参
成员方法:吃饭(猫吃鱼)
狗:
成员变量:姓名 年龄
构造方法:无参 带参
成员方法:吃饭(狗吃肉)
由于有共性的地方,所以就提取了一个父类,动物。
但又因为吃饭的内容不同,所以吃饭的方法是一个抽象方法。
实现:从抽象到具体
动物类:
成员变量:姓名 年龄
构造方法:无参 带参
成员方法:吃饭();
猫类:
继承自动物类
重写吃饭()
狗类:
继承自动物类
重写吃饭()
实例:
一个类如果没有定义抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
可以,不能创建对象。
抽象类不能和那些关键字共用:
private:出错,非法的修饰符组合
final:出错,非法的修饰符组合
static:无意义
- Java学习之抽象类
- Java学习之抽象类
- Java学习之抽象类
- JAVA学习之抽象类和接口
- JAVA学习之:抽象类与接口
- Java学习之---抽象类与接口
- java学习之抽象类与接口
- Java学习笔记之抽象类
- JAVA学习笔记之抽象类
- Java学习笔记之抽象类
- Java学习之路--抽象类
- JAVA学习笔记1之抽象类
- java学习之接口和抽象类
- Java学习个人备忘录之抽象类
- JAVA学习.抽象类
- java之抽象类
- java之 ------ 抽象类
- java之抽象类
- 第10、11周项目1:点-圆-圆柱类族的设计(2)
- 安卓中的广播使用
- android studio 合代码 buildToolsVersion错误
- SQL_Server_2012修改sa密码的方法
- 查找最大元素
- Java学习之抽象类
- php-memcache扩展和php-memcached扩展安装
- 比较Collection 和Collections的区别,Array与Arrays的区别
- 零基础学习swift
- Latch导致MySQL Crash
- 同网段和不同网段设备通信过程详解
- 设计模式详解
- 栈的应用之字符串的反转
- Swift 3.0 预告:将 Objc 库转换成更符合 Swift 语法风格的形式