黑马程序员-抽象类总结
来源:互联网 发布:mac teamviewer 破解 编辑:程序博客网 时间:2024/05/18 13:27
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
抽象类总结
(1)抽象类的概述
方法声明相同,功能实现不同.
(2)抽象类
Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,
该方法称为抽象方法,包含抽象方法的类就是抽象类。
特点:
A:抽象类和抽象方法都必须用abstract标识
B:抽象类中不一定有抽象方法
抽象方法必须在抽象类中
C:子类继承抽象类时:
要么实现抽象类中的所有抽象方法.
要么部分实现抽象类中的抽象方法,本身也必须定义为抽象类.
D:抽象类不能被实例化
E:用子类的对象来调用抽象类中的功能.真正调用的是子类中的实现.
(3)抽象类中的成员
A:成员变量
既可以有变量,也可以有常量.
B:成员方法
既可以有抽象方法,也可以由非抽象方法.
C:构造方法
可以存在构造方法,但不能被实例化
(4)抽象类的问题
A:抽象类中是否有构造方法?抽象类不能不能被实例化呢?为什么?
有.
不能被实例化.
因为抽象类中可能有抽象方法,被实例化后,调用抽象方法没有意义.因为抽象方法没有方法体.
B:抽象类中可不可以没有抽象方法?
可以.
C:抽象关键字abstract不可以和哪些关键字共存?为什么?
**private
私有就不能被子类实现.
**static
静态的东西可以通过类名调用,而调用抽象的方法没有意义.
**final
final修饰的方法,不能被重写.而abstract要求被实现.冲突.
D:继承中,为什么需要抽象类?
因为抽象类可以强制要求子类实现某些功能.
接口
(1)接口的概述
当一个类的方法都是抽象方法的时候,可以用接口来表示.
(2)接口的细节
A:接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。
B:一个类可以在继承一个类的时候,实现多个接口.
C:当一个类实现多个接口时,必须全部实现所以接口中的方法.
假如你没有实现所有接口中的方法,那么这个类是抽象类.
D:为什么不能有多继承呢?可能会出现调用方法不明确.
而类实现多个接口时,由于接口中的方法都是抽象的,不会出现调用不明确的情况.
E:java中有多继承吗?
java中没有多继承,但是,它对多继承进行了优化.用多实现体现.
java中有多继承.在接口上.
F:类与类的关系:
继承关系.而且只能是单继承.
类与接口的关系:
实现关系.可以单实现,也可以多实现.
接口与接口的关系:
继承关系.可以单继承,也可以多继承.
(3)接口的特点
interface关键字
类与接口的关系用implements(实现)来表示
A:对外暴露的规则
B:是功能的扩展
C:降低耦合性(Spring框架). 编程的要求:类与类之间低耦合.类本身高内聚.
D:接口的出现让我们的类可以多实现.
举例:CPU和主板,USB插口,电源插座
接口的理解:
A:狭义的理解指的就是java中的接口.
(4)抽象类和接口的区别
A:抽象类只能单继承
接口可以多实现
B:抽象类中的成员:
成员变量:可以有常量,也可以有变量
成员方法:可以有抽象的,也可以有非抽象的.
构造方法:有构造方法,但是不能实例化.用于给子类进行实例化.
接口中的成员:
成员常量:接口中只能有常量
成员方法:接口中的方法只能是抽象的.
接口中的成员有默认修饰符:
成员变量: public static final
成员方法: public abstract
但是,一般建议手动给出修饰符.
C:抽象类中定义的是继承体系中的共享内容.
接口中定义的是继承体系中的扩展功能.
D:接口的出现避免了抽象类中单继承的局限性.
E:抽象类表示的是"is a"的关系. xx是yy的一种.
接口表示的是"like a"的关系. xx像yy的一种.
4:多态
(1)多态的概述
一个对象在程序的运行过程中,可能有多种形态.
若Animal是父类,Dag是子类
Animal a = new Cat();
a.eat();
a = new Dog();
a.eat();
生活中举例:
男人(人,男人)
狗(狗,犬科,动物)
水(固态,液体,气态)
(2)多态的举例
Fu f = new Zi();
f.show();
f指向了子类的对象.
但是调用的时候,确是调用父类中声明了的东西.
(3)多态的成员特点
Fu f = new Zi();
成员变量:编译运行都看左边.
成员方法:编译看左边,运行看右边.
静态方法:编译运行都看左边.
(4)多态的转型
向上转型:从小到大 从子到父
向下转型:从大到小 从父到子
Animal a = new Dog(); //把狗提升为了动物
a.eat();
Dog d = (Dog)a; //把动物转成了狗
a.play();
(5)多态的思想 指挥同一类型的一批对象做事情.
Animal:eat(),play()
Dog:
Cat:
Pig:
class Dog
{
void eat(){}
void play(){}
}
public static void main(String[] args)
{
Dog d = new Dog();
d.eat();
d.play();
printDog(d);
}
public static void printDog(Dog d) //Dog d = new Dog();
{
d.eat();
d.play();
}
public static void pritnAnimal(Animal a)
{
a.eat();
a.play();
}
(6)关键字 instanceof 比较运算符
A:判断某个对象是否是某种类型的
B:格式
对象名 instanceof 类名(子类的类名)
C:举例
public static void print(Animal a) //Animal a = new Cat();
{
//instanceof判断某个对象是否是某种类型的
//格式:对象名 instanceof 类名(最好是子类的类名)
if(a instanceof Dog)
{
Dog d = (Dog)a;
d.play();
}
else if(a instanceof Pig)
{
Pig p = (Pig)a;
p.play();
}
a.eat();
}
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
- 黑马程序员-抽象类总结
- 黑马程序员:Java基础总结----抽象类
- 黑马程序员--抽象类
- 黑马程序员--抽象类
- 黑马程序员----抽象类
- 黑马程序员---抽象类
- 黑马程序员-抽象类
- 黑马程序员----抽象类
- 黑马程序员之C#学习笔记: 抽象类总结
- 黑马程序员 面向对象--抽象类、接口、内部类总结
- 黑马程序员_java接口与抽象类总结
- 黑马程序员-----java中final关键字、抽象类、接口总结*
- 黑马程序员_关于java抽象类abstract自我总结
- 黑马程序员--Java抽象类和接口总结
- 8--黑马程序员---技术总结之抽象类、内部类
- 黑马程序员——抽象类,接口总结
- 黑马程序员__Java抽象类和多态总结
- 黑马程序员---抽象类与抽象方法
- Delphi三层程序开发
- ZOJ 2334 Monkey King 可并堆左偏树
- C指针原理(43)-C++-boost(日期时间)
- 参加广州传智播客学习PHP培训的请速速报名
- 【Qt】在其他机器上显示不了jpg等图片,考虑库文件问题
- 黑马程序员-抽象类总结
- Hibernate中Criteria的完整用法
- 模板方法模式——Head First Design Patterns
- 不仅广州传智播客在选择Java,而是全世界都在选择Java
- 安装新插件后eclipse起不来的问题
- 加州求职记
- OleInitialize、CoInitialize、CoInitializeEx和AfxOleInit()区别
- 随机验证码---带有干扰的随机验证码(二)
- listview动态获取数据