java中抽象类的粗浅理解
2016-03-02 12:22
711 查看
抽象类:
用abstract修饰的类,就是抽象类,抽象类也是类的一种,能被继承。
抽象类,不能进行实例化,就是说不能通过new操作。
抽象类中可以包含抽象方法和有具体实现的方法。
抽象方法:
用abstract修饰的方法,就是抽象方法。抽象方法必须定义在抽象类中,但是抽象类中,不一定全部都是抽象方法。抽象方法不用有实现。
抽象类的继承有2种情况:
1、抽象类继承抽象类:即子类也是抽象类(用abstract修饰),这时子类可以选择实现父类中的抽象方法,也可以不去实现,但是有一点没有变化,就是子类也不能实例化(不能new操作)。
2、非抽象类继承抽象类:这时子类必须实现父类中的全部抽象方法,子类可以被实例化(能new操作)。
抽象类的应用意义:
抽象类的出现,在于建立一种约定的机制。约定的机制通过抽象方法来实现,由实现子类进行方法的实现。说白了就是对一组对象(类)进行高层级的抽象,形成一个高层级抽象类,通过这个高层级的抽象类,来约定这组对象的行为。例如下面的实例,对三角形、矩形,当然可以有更多的形状,进行高层级的抽象,即形状。通过抽象类(形状),来约定所有子类都必须提供周长的方法。
实例代码如下:
用abstract修饰的类,就是抽象类,抽象类也是类的一种,能被继承。
抽象类,不能进行实例化,就是说不能通过new操作。
抽象类中可以包含抽象方法和有具体实现的方法。
抽象方法:
用abstract修饰的方法,就是抽象方法。抽象方法必须定义在抽象类中,但是抽象类中,不一定全部都是抽象方法。抽象方法不用有实现。
抽象类的继承有2种情况:
1、抽象类继承抽象类:即子类也是抽象类(用abstract修饰),这时子类可以选择实现父类中的抽象方法,也可以不去实现,但是有一点没有变化,就是子类也不能实例化(不能new操作)。
2、非抽象类继承抽象类:这时子类必须实现父类中的全部抽象方法,子类可以被实例化(能new操作)。
抽象类的应用意义:
抽象类的出现,在于建立一种约定的机制。约定的机制通过抽象方法来实现,由实现子类进行方法的实现。说白了就是对一组对象(类)进行高层级的抽象,形成一个高层级抽象类,通过这个高层级的抽象类,来约定这组对象的行为。例如下面的实例,对三角形、矩形,当然可以有更多的形状,进行高层级的抽象,即形状。通过抽象类(形状),来约定所有子类都必须提供周长的方法。
实例代码如下:
package java.HighCode; abstract class Shape { abstract float perimeter(); } class Triangle extends Shape { float side1; float side2; float side3; float perimeter(){ return side1+side2+side3; } } class Rectangle extends Shape{ float side1; float side2; float side3; float side4; float perimeter(){ return side1+side2+side3+side4; } } public class AbstractT { public static void main(String[] args) { Triangle triangle = new Triangle(); triangle.side1 =1; triangle.side2 =2; triangle.side3 =3; System.out.println("三角形的周长为:"+triangle.perimeter()); Rectangle rectangle = new Rectangle(); rectangle.side1 =1; rectangle.side2 =1; rectangle.side3 =1; rectangle.side4 =1; System.out.println("矩形的周长为:"+rectangle.perimeter()); } }
相关文章推荐
- 让32位Eclipse和64位Eclipse同时在64的Windows7上运行
- 推荐一个java开源项目 JeeSite
- java中mysql问题
- Java使用JWS API开发Web Service
- java.lang.SecurityException: Not allowed to bind to service Intent 不允许绑定服务
- Eclipse下导入外部jar包的3种方式
- 『java.lang.util』-- collection 接口研究
- java复习总结1
- java 五子棋源代码+注释
- JAVAWEB——Page 指令
- Hibernate struts2配置
- myeclipse10安装findbugs
- AS导入eclipse的项目之后报Couldn't load jpush180 from loader dalvik.system.PathClassLoader错误
- myeclipse10.7破解成功 但 无法打war包 提示:securecrt alert:integrity ch
- java.lang.SecurityException: Binder invocation to an incorrect interface 绑定错误的接口
- Java开发Web Service的几种解决方案
- Java开发Web Service的简介
- js 和 java 作用域的区别
- mybatis 与spring整合
- 【JAVA】3、编写第一个Java程序