详解java三大基本特征
2015-07-20 09:20
471 查看
首先我们都应该知道继承就是子类继承父类的成员变量、方法、构造器等(当然这里只是公有的可以,对于私有的当然是不行的咯)(想知道什么是构造器?点击此处)。然后我们必须明白接口是干什么用的,接口——顾名思义,就是一个接口呗,是实现某种功能的东西。接口是更加抽象的抽象类。
对于接口我想说以下几点:
1、接口不能被实例化
2、抽象类中可以有可以实现的方法,而接口里面的所有方法都不能实现
3、一个类可以有多个接口
4、接口中可以有变量,但是变量不能用private、protected修饰
5、接口可以看做是对继承的一种补充,对某个类功能进行扩展,非常灵活。实现接口是在不打破继承的前提下对某个功能的扩展
接口体现了程序设计的多态和高内聚低耦合的设计思想,
多态和继承,因为有了继承所以有了多态,多态大家都知道是“父类类型的引用指向子类对象”,这就说明了多态就是基于继承。
顺便扩展一下封装与接口:
封装(encapsulation)是计算机常见的术语,即保留有限的外部接口(interface),隐藏具体实施细节。封装可以是类的封装或者是方法的封装,我们可以将具有某一特性的实体封装成一个类或者是将具有一定功能的方法,抽取出来封装成一个共外面调用的方法。
好!下面我们就实例来更深入的了解继承与接口,看代码:
结果如下图:
![](http://img.blog.csdn.net/20150720091808080)
而这里我们假如要新曾一种类型的汽车的销售,只需要让新定义的类实现Car并实现它的所有方法,而无需对源代码做任何修改,CarShop类的sellCar(Car car)方法就可以处理新的车型了,新增代码如下:
通过代码拓展:继承是多态得以实现的基础。从字面上理解,多态就是一种类型(都是Car类型)表现出多种状态(宝马汽车的名称是BMW,售价是300000;奔驰汽车的名称是BenZ,售价是350000)。将一个方法调用同这个方法所属的主题(也就是对象或类)关联起来叫做绑定,分前期绑定和后期绑定。
1、前期绑定:在程序运行之前进行绑定,由编译器和链接程序实现,又叫做静态绑定。比如static方法和final方法。注意,这里也包括private方法,因为它是隐式final的、
2、后期绑定:在运行时根据对象的类型进行绑定,由方法调用机制实现,因此又叫做动态绑定,或和运行时绑定。除前期绑定外的所有方法都属于后期绑定。
啥叫高内聚低耦合?这个问的好。
这个人介绍得比我好,详情请点击此处!
总结:因为继承所以有多态,因为封装所以有接口,而一个类只能继承一个父类(C++除外)但是可以实现多个接口。通过接口,可以对类功能进行非常灵活的修改。
对于接口我想说以下几点:
1、接口不能被实例化
2、抽象类中可以有可以实现的方法,而接口里面的所有方法都不能实现
3、一个类可以有多个接口
4、接口中可以有变量,但是变量不能用private、protected修饰
5、接口可以看做是对继承的一种补充,对某个类功能进行扩展,非常灵活。实现接口是在不打破继承的前提下对某个功能的扩展
接口体现了程序设计的多态和高内聚低耦合的设计思想,
多态和继承,因为有了继承所以有了多态,多态大家都知道是“父类类型的引用指向子类对象”,这就说明了多态就是基于继承。
顺便扩展一下封装与接口:
封装(encapsulation)是计算机常见的术语,即保留有限的外部接口(interface),隐藏具体实施细节。封装可以是类的封装或者是方法的封装,我们可以将具有某一特性的实体封装成一个类或者是将具有一定功能的方法,抽取出来封装成一个共外面调用的方法。
好!下面我们就实例来更深入的了解继承与接口,看代码:
[code]package com.car; //定义一个汽车接口,实现功能如下 interface Car{ //获得汽车名称 String getName(); //获得汽车售价 int getPrice(); } //定义一个宝马车类,并实现Car接口,并实现接口的相应功能 class BMW implements Car{ public String getName(){ return"宝马"; } public int getPrice(){ return 300000; } } //定义一个奔驰车类,并实现Car接口,功能同上 class Ben implements Car{ public String getName(){ return"大奔"; } public int getPrice(){ return 350000; } } //汽车出售店 public class CarShop{ //售车总收入并初始化 private int money=0; //卖出一部车,输出车型名称及单价 public void sellCar(Car car){ System.out.print("车型:"+car.getName()+"单价:"+car.getPrice()); //增加卖出车售价的收入 money +=car.getPrice(); } //售车总收入 public int getMoney(){ return money; } public static void main(String[] args){ //创建一个汽车出售店 CarShop aShop = new CarShop(); //卖出一辆宝马车 aShop.sellCar(new BMW()); //卖出一辆奔驰 aShop.sellCar(new Ben()); //输出卖出汽车的总收入 System.out.print("总收入:"+aShop.getMoney()); } }
结果如下图:
而这里我们假如要新曾一种类型的汽车的销售,只需要让新定义的类实现Car并实现它的所有方法,而无需对源代码做任何修改,CarShop类的sellCar(Car car)方法就可以处理新的车型了,新增代码如下:
[code]//定义一个保时捷车类,并实现Car接口,并实现接口的相应功能 class Porsche implements Car{ public String getName(){ return"保时捷"; } public int getPrice(){ return 1000000; } }
通过代码拓展:继承是多态得以实现的基础。从字面上理解,多态就是一种类型(都是Car类型)表现出多种状态(宝马汽车的名称是BMW,售价是300000;奔驰汽车的名称是BenZ,售价是350000)。将一个方法调用同这个方法所属的主题(也就是对象或类)关联起来叫做绑定,分前期绑定和后期绑定。
1、前期绑定:在程序运行之前进行绑定,由编译器和链接程序实现,又叫做静态绑定。比如static方法和final方法。注意,这里也包括private方法,因为它是隐式final的、
2、后期绑定:在运行时根据对象的类型进行绑定,由方法调用机制实现,因此又叫做动态绑定,或和运行时绑定。除前期绑定外的所有方法都属于后期绑定。
[code]多态就是在后期绑定这种机制上实现的。多态给我们带来的好处是消除了类之间的耦合关系,是程序更容易扩展。比如上例中新增保时捷汽车的销售、
啥叫高内聚低耦合?这个问的好。
这个人介绍得比我好,详情请点击此处!
总结:因为继承所以有多态,因为封装所以有接口,而一个类只能继承一个父类(C++除外)但是可以实现多个接口。通过接口,可以对类功能进行非常灵活的修改。
相关文章推荐
- Quartz+Spring的集群配置
- Struts2 国际化
- The import java.util cannot be resolved
- java synchronized用法
- eclipse解决editor does not contain a main type的方法
- eclipse常用的快捷键
- java中的构造方法的使用及作用分析
- 《深入浅出struts2》--第一章,Model2应用程序
- Eclipse中安装Genymotion插件解决方案
- java导出excel表格,Struts2配置
- springmvc批量文件打包成zip下载功能
- Java多线程之生产者消费者模式
- java并发编程第五章(1) 创建Fork/Join线程池
- 转:java提取图片中的像素
- Java本地文件操作
- JAVA基础-反射
- ——JAVASE-IO流(下)
- JAVA String
- ——JAVASE-IO流(上)
- openjdk源码下载