黑马程序员---面向对象(四)
来源:互联网 发布:live photos软件 编辑:程序博客网 时间:2024/04/29 18:26
---------------------- android培训、java培训、期待与您交流! ----------------------
1:接口(interface)
(1)接口的由来:当一个类中所有的方法都是抽象的时候,你没必要定义为抽象类,
定义为接口就可以了。
(2)解决了java中只能单继承的问题。(对多继承进行了优化)
A:类与类:只能是单继承。 extends
B:接口与接口:可以是单继承,也可以是多继承。 extends
C:类与接口:可以是单实现,也可以是多实现。 implements
(3)成员特点:
A:只有成员变量和成员方法。
B:成员变量 默认修饰符 public static final
**int X = 20;
**其实是这样的 public static final int X = 20;
C:成员方法 默认修饰符 public abstract
**void show();
**其实是这样的 public abstract void show();
建议:为了便于阅读,自己手动加上修饰符。
(4)接口特点:
A:接口是对外暴露的规则
B:接口是功能的扩展
C:接口降低了程序的耦合性。
**内聚(自己实现功能的能力)
**高内聚,低耦合。
举例:主板和CPU,USB接口,电源插座。
D:扩展说了下接口的理解
**狭义的理解就是java中的接口。
**广义的理解就是:任何定义的规范都是接口。
(5)接口和抽象类的区别:
A:抽象类只能被单继承;接口可以被多实现。
B:抽象类中的成员:成员变量:可以是常量,也可以是变量。
成员方法:可以是抽象的,也可以是非抽象的。
构造方法:虽然不可以创建对象,但是可以给子类实例化用。
接口中的成员:成员变量:只能是常量。默认修饰符 public static final
成员方法:只能是抽象的。默认修饰符 public abstract
C:抽象类中定义的是体系结构中的共性的内容。
接口中定义的是对象的扩展功能。
D:抽象类被继承表示的是:"is a"的关系。xx是yy中的一种。
接口被实现表示的是: "like a"的关系。xx像yy中的一种。
(6)学生:Student
A:属性:学号,姓名,年龄
B:方法:学习(study),吃饭(抽象eat),抽烟(是不是所有的学员都抽烟呢?),
篮球(是不是所有的人都会打篮球呢?)
分析:学员都具备学习的行为和吃饭的行为,但是并不是所有的学员都抽烟,也不是所有的学员都打篮球
interface Smoking {
public abstract void smoking();
}
interface Sport{
public abstract void playBasketBall();
}
描述的是即会抽烟又会打篮球的学生:SmokeStudent extends Student implements Smoking,Sport
一个类只能继承一个类,但是可以实现多个接口,每实现一个接口,功能就扩展了一部分
SmokeStudent ss = new SmokeStudent();
ss.eat();
ss.study();
ss.smoking();
ss.playBasketBall();
2:多态
(1)某一类事物的多种存在形态。
**方法重载(静态多态)
**方法重写(动态多态,对象多态)
(2)对象多态的前提
A:类与类(或接口)要有继承(或实现)关系。
B:一定要有方法的重写。
C:一定要有父类或者接口的引用指向子类的对象。Person p = new SuperMan();
SuperMan sm = (SuperMan)p;
(3)多态思想:可以指挥同一类型的一批对象做事情。多态的出现让我们复杂的问题简单化了。
A:Animal Cat Dog
**method(Animal a){a.eat();}//Animal a = new Cat();
(4)多态中成员的特点:(我们只研究特殊的,就是说名字一样的东西)
Fu f = new Zi();
A:成员变量:编译和运行都看Fu。
B:非静态方法:编译看Fu,运行看Zi。
C:静态方法:编译和运行都看Fu。
举例: 动物的例子
//向上转型Animal a = new Cat();a.eat();a.catchMouse();//向下转型Cat c = (Cat)a;c.eat();c.catchMouse();//向上转型Animal a = new Dog();//向下转型 转换异常//Cat c = (Cat)a;Dog d = (Dog)a;
---------------------- android培训、java培训、期待与您交流! ----------------------
- 黑马程序员 面向对象(四)
- 黑马程序员---面向对象(四)
- 黑马程序员_JAVA_面向对象(四)
- 黑马程序员 四、面向对象(2)
- 黑马程序员--四、面向对象
- 黑马程序员------面向对象和的学习(四)
- 【黑马程序员】面向对象(四) 第八天
- 黑马程序员 自学日记(四)面向对象 二
- 黑马程序员_Java基础_面向对象(四)_08
- 黑马程序员_笔迹四_面向对象(基础)
- 黑马程序员——(四)面向对象
- 黑马程序员 JAVA基础 -面向对象(四)
- 黑马程序员——面向对象(四)
- 黑马程序员 java面向对象<四> 多线程
- 黑马程序员-Java面向对象(四)
- 黑马程序员----九-面向对象四
- 黑马程序员--面向对象(类、对象)
- 黑马程序员_四、面向对象(类与对象、构造方法、this关键字、静态)
- POJ.2.栈的基本操作
- 简单OSG小程序,实现在cmd下osgviewer <filename>小功能
- eclipse和dos对转义字符的不同解释
- nginx反向代理,node获取真实IP
- COleVariant
- 黑马程序员---面向对象(四)
- 【Android 应用开发】自定义View 和 ViewGroup
- Execl “此单元格中的数字为文本格式,或者其前面有撇号” 设成数字格式
- 歌手评分
- linux内存对齐
- jstat 统计分析JVM运行状况
- C++项目参考——猜数字游戏
- 弹指间的商业
- 淘宝2013双12攻略:淘宝卖家双12怎么玩?