美文网首页
抽象类、接口、内部类总结

抽象类、接口、内部类总结

作者: 第六象限 | 来源:发表于2018-01-10 19:58 被阅读0次

抽象方法与抽象类

抽象方法与抽象类必须使用abstract修饰,有抽象方法的类只能被定义为抽象类,抽象类里可以没有抽象方法。
它们遵守的规则:

  • 1 用abstract修饰,且抽象方法没有方法体(注意与空方法体的区别)。
  • 2 抽象类不能实例化,即使该抽象类不包含抽象方法
  • 3 抽象类包含属性、方法、初始化块、内部类、构造器、枚举六种类型。其构造器主要用于被子类调用。
  • 4 包含抽象方法,或者父类包含抽象方法而没有实现,必须定义为抽象类。

abstract不能修饰属性和构造器,不能与static同时使用,也不能和private同时使用。

模版模式简单规则:

  • 抽象父类只定义需要使用的某些方法,其余留给子类实现。
  • 父类中包含需要调用其他系列方法的方法,这些调用既可以由父类实现也可以由子类实现,父类里提供的一些方法只是一些通用的算法,其实现也并不完全有自身实现,而必须依赖子类的辅助。

接口:

  • 其修饰符可以是public或默认的包权限访问控制符。
  • 接口中可以包含属性(只能是常量),方法(只能是抽象方法),内部类(包括内部接口)和枚举类定义
  • 接口中的所有成员都是public权限(也可以省略不写),而接口中的属性则默认是public static final。
  • 一个Java源文件中最多只有一个public接口,且与该源文件的主文件名相同。
  • 实现接口的方法时只能使用public权限,因为子类重写父类方法或实现接口方法是访问权限只能更大或者相等。

面向接口编程的典型应用:简单工厂模式、命令模式。

内部类

内部类的作用

  • 1 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包内的其他类访问该类
  • 2 内部类成员可以直接访问外部类的私有数据,而外部类不能访问内部类的实现细节。
  • 3 匿名内部类适用于创建那些只需要使用一次的类

内部类分为成员内部类和局部内部类,而局部内部类又分为非静态内部类和静态内部类,其在外部类中与其他静态,和非静态成员的使用类似。
使用示例:

class Out{
 class In{
  public In(String msg){
   System.out.println(msg);
  }
 }
}

public class CreateInnerInstance {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Out.In in = new Out().new In("测试");
 }
}

匿名内部类格式

new 父类构造器(实参列表)|实现接口()
{
 //匿名内部类的类体部分
}

匿名内部类必须继承一个父类或实现一个接口
匿名内部类使用规则:

  • 1 不能使抽象类
  • 2 不能定义构造器,因为没有类名,但可以定义初始化块,可以通过初始化块来完成构造器的工作。

使用实例:

interface Product{
 public double getPrice();
 public String getName();
}
public class TestAnonymous {

 /**
  * @param args
  */
 public void test(Product p){
  System.out.println("购买了一个"+p.getName()+",花掉了"+p.getPrice());
 }
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  TestAnonymous ta = new TestAnonymous();
  ta.test(new Product()
    {
     public double getPrice(){
      return 383.9;
     }
     public String getName(){
      return "美女";
     }
    }  
  );
 }
}

枚举类使用实例1:

public enum SeansonEnum
{
 SPRING,SUMMER,FALLL,WINTER;
}

枚举类使用实例2:

public enum Gender
{
 MAIL("男"),FEMAIL("女");
 private String name;
 private Gender(String name){
  this.name = name;
 }
 public String getName(){
  return this.name;
 }
}

相关文章

  • Java面试核心框架

    常量池 常用关键字 final static 内部类 抽象类 接口 异常 注解 容器 内存管理内存模型、工作内...

  • 接口,抽象类,工厂设计模式,代理模式

    一、接口的结构: 抽象方法 全局常量 最终写法: 其他内部结构内部类内部抽象类内部接口 二、接口和抽象类 抽象类可...

  • Java匿名内部类

    导语 学完匿名内部类就懂的情书。 主要内容 接口与抽象类和匿名内部类的关系 具体内容 匿名内部类也就是没有名字的内...

  • 抽象类、接口、内部类总结

    抽象方法与抽象类 抽象方法与抽象类必须使用abstract修饰,有抽象方法的类只能被定义为抽象类,抽象类里可以没有...

  • JAVA面向对象-day04

    A 抽象类 接口 多态(意义) 强制转型 instanceof关键字 匿名内部类

  • 每日一点(1)

    匿名类 内部类 匿名内部类 匿名类(可以是接口 抽象类 普通类):1:无需创建对象2:直接重写方法 内部类:若一...

  • 9.内部类

    一包 二内部类 1成员内部类(了解) 2匿名内部类(掌握) 通过匿名内部类可以在抽象类没有具体的子类,接口没有具体...

  • 知识点总结

    1. java: * 集合 * 内部类,匿名类,静态类 * 抽象类,接口区别 * 线程池 * ...

  • Java 编程思想笔记六:接口和内部类

    第9章《接口》和第10章《内部类》主要介绍了抽象类、接口、内部类、匿名类以及嵌套类等概念,以及它们的区别和联系。主...

  • Think in Java 第九章(接口)

    接口和内部类为我们提供了一种将接口与现实分离的更加结构化的方法。 9.1抽象类和抽象方法 创建抽象类是希望通过接口...

网友评论

      本文标题:抽象类、接口、内部类总结

      本文链接:https://www.haomeiwen.com/subject/wdhanxtx.html