抽象类的使用? abstract 继承的使用? interface implements
来源:互联网 发布:java工程师是什么 编辑:程序博客网 时间:2024/04/28 13:52
1.抽象类使用abstract修饰符定义
抽象类不能实例化
抽象类可以包含普通属性方法,和普通类差不多
抽象类的方法没有方法体
实现抽象方法时权限修饰符不能低于抽象方法定义时的权限修饰符
从上面来看抽象类和普通类的区别:抽象类用abstract修饰符修饰,抽象方法没有方法体,其他貌似都一样
抽象类的作用,因为继承抽象类必须实现抽象类的方法,所以避免了子类设计的随意性,是一种模板模式。
class AbTest extends Ab{public void cTest(){ //继承抽象类必须实现抽象类的抽象方法System.out.println("cTest");}public void dTest(Ab ab){ //抽象类不能创建实例,但是可以用来定义,然后以子类实现}public static void main(String[] args){AbTest abTest = new AbTest();System.out.println(abTest.c);abTest.cTest();abTest.dTest(new AbTest2()); //向上转型}}abstract class Ab{private int a = 1; //抽象类的普通属性protected int b = 2;public int c = 3;private void aTest(){ //抽象类的普通方法System.out.println("aTest");}protected void bTest(){ System.out.println("bTest");} protected abstract void cTest(); //抽象类的抽象方法,没有方法体}
2.接口是更彻底的抽象
接口属性默认是public static final 且只能是常量
接口的方法都是public abstract
一个类可以继承多个接口,相当于实现了多重继承
class InterfaceTest implements Itest{public void printTest(){ //实现接口方法System.out.println("接口方法实现");}public void test(Itest it){ //接口当做形参,可以用子类实现}public static void main(String[] args) {InterfaceTest it = new InterfaceTest();it.printTest(); //接口方法System.out.println(Itest.MAX_A); //接口中静态常量it.test(new InterfaceTest()); //向上转型}}interface Itest //如果不定义修饰符,默认包修饰符,只有同包下能访问的接口{int MAX_A = 123; //默认是public static final,且属性只能是常量void printTest(); //接口方法默认是public abstract}
3.抽象和接口的异同
相同之处:
不同之处:
- 抽象类的使用? abstract 继承的使用? interface implements
- php 接口类(interface,implements)的学习和使用
- Java 学习笔记 (3) -抽象类 abstract 接口 interface 内部类 inner class 继承 extends 实现 implements 包 package
- abstract,以及abstract抽象类与interface接口的区别
- 32.abstract抽象类的使用
- 抽象类的使用(abstract)
- C#abstract抽象类的使用
- 接口 interface 接口的多继承 implements实现 抽象和接口的异同点
- interface,abstract class,abstract interface Java中的接口,抽象类和抽象接口的异同
- 4.3抽象类abstract和接口interface定义implements实现接口中的抽象方法
- 抽象类(abstract class)的继承
- PHP的类,abstract类,interface及关键字extends和implements
- 抽象类(abstract)和接口(interface)的区别
- Abstract Class and Interface 抽象类与接口的区别
- 抽象类(abstract)与接口的区别(interface)
- 抽象类 abstract class 与 接口 interface 的区别
- 抽象类中的abstract和interface的区别
- 抽象类(abstract)和接口(interface)的区别
- [整理]cygwin下使用shell时碰到的几个问题
- C++中Ansi、Unicode、UTF8字符串之间的转换和写入文本文件 -
- db2entry与db2trans
- mysql 备份数据库 执行sql脚本
- 第四周实验报告(三)--修改
- 抽象类的使用? abstract 继承的使用? interface implements
- libpcap使用举例(1)
- 输入年、月、日,求该天是当年的第几天
- XCode快捷键
- Servlet的介绍
- 利用多文件组织项目
- 集中力(focus)
- 积累
- Oracle(五)---------------------分组函数