黑马程序员----Java基础之面向对象(封装 继承 多态)(二)

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ---------

抽象类
抽象类的特点:

1.  抽象方法一定要再抽象类中

2.  抽象方法和抽象类都必须被abstract关键字修饰

3.  抽象类不可以用new穿件对象.因为调用抽象方法没意义.

4.  抽象类中的方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用,如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类

例如:

abstract class A//抽象类
{
abstract void show();//抽象方法
}
class B extends A
{
void show(){}
}

抽象类和一般类没什么大的区别,该如何描述事物就如何描述事物,只不过,该事物出现了一些看不懂的东西,这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义主体

特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象

练习:假如我们在开发一个系统时需要对员工进行建模:员工包含三个属性:姓名,工号以及工资,经理也是员工,除了含有员工的属性外,还有另一个奖金属性.请使用继承的思想设计出员工类和经理类.要求类中提供必要的方法进行属性的访问

扫描二维码关注公众号,回复: 4189121 查看本文章


模版方法:

在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,有该类的子类去完成

例子:获取一段程序运行的时间


接口

格式:interface {}

接口中的成员修饰符是固定的

成员常量: public  static  final  

成员函数:  public  abstract  

接口的出现将"多继承"通过另一种形式体现出来,即"多种实现";

接口也可以认为是一个特殊的抽象类

当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示.

class用于定义类

interface用于定义接口

接口是不可以创建对象的,因为有抽象方法.

需要被子类实现,子类对接口中的抽象方法全都覆盖后,才可以实例化,否则子类还是一个抽象类

一个类可以实现多个接口

interface Inner
{
public abstract void run();
}
interface Inter
{
public abstract void show();
}

class Test

{

}
class Demo extends Test  implements Inner,Inter
{
public abstract void run(){}
public abstract void show(){}
}

接口的特点

接口是对外暴露的规则

接口是程序的功能的扩展

接口可以用来多实现

类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口

接口与接口之间可以有继承关系

多态

多态的定义:某一类事物的多种存在形态

例如:  动物中猫,  狗

猫这个对象对应的类型是猫的类型   猫  想= new 猫();

同时猫也是动物的一种,也可以把猫称为动物   动物  y = new  猫();   父类型引用指向了子类对象

动物是猫和狗具体事物中抽取出来的父类型   

多态的体现

父类引用指向了自己的子类对象

父类的引用也可以接受自己的子类对象

多态的前提

必须是类与类之间有关系.要么继承,要么实现

通常还有一个前提:存在覆盖

多态的好处

多态的出现大大的提高了程序的扩展性

多态的弊端

提高了扩展性,但是只能使用父类应用访问父类中的成员

练习:基础班学生:::学习,  睡觉

高级班学生:::学习,  睡觉


在多态中成员函数的特点

在编译时期:参阅引用型变量所属的类中是否有调用方法.如果有,编译通过,如果没有,编译失败

在运行时期:参阅对象所属的类中是否有调用的方法

简单总结就是:成员函数在多态调用时,编译看左边,运行看右边

在多态中,成员变量的特点:

无论编译还是运行,都参考左边(引用型变量所属的类)

在多态中,静态成员函数的特点

无论编译还是运行,都参考左边

多态主板示例:




猜你喜欢

转载自blog.csdn.net/Crazysort/article/details/46521935
今日推荐