Java关键字整理之二

abstrac和interface

一、抽象类:abstract

抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了。

格式如下

  包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:

  1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

  2)抽象类不能用来创建对象,但是它可以有构造方法,用来帮助子类实例化。

  3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

抽象类的具体实例如下:

//定义一个抽象类,切记它不能用来创建对象
abstract class Employee
{
        //声明受保护的属性
    protected String name;
    protected String id;
    protected double pay;

        //抽象类的构造方法
    public Employee(String name,String id,double pay)
    {
          this.name = name;
          this.id = id;
          this.pay = pay;
    }
        //抽象类的普通成员方法
    public void print()
    {
     System.out.println("name = "+name+"id = "+id+"pay = "+pay);
    }

        //抽象类的抽象方法,子类必须实现该方法,不然子类也是抽象类
    public abstract void work();
}

//抽象类的一个子类
class Pro extends Employee
{
    public Pro(String name,String id,double pay)
    {
       //调用父类的构造函数进行初始化
       super(name,id,pay);
    }
    //实现了父类中的抽象方法,所以子类不再是抽象类
    public void work()
    {
       System.out.println("Pro work");
    }
}    

//抽象类的另一个子类
class Manager extends Employee
{
    private double bonus;
    public Manager(String name,String id,double pay,double bonus)
    {
      //调用父类的构造方法进行初始化
      super(name,id,pay);
      this.bonus = bonus;
    }
    //实现了父类中的方法,所以子类不再是抽象类
    public void work()
    {
     System.out.println("Manager work");
    }
}

//测试类
class YuanGongDemo
{
    public static void main(String[] args)
    {
      Pro p1 = new Pro("Liding","jfisd",578.5);
      p1.work();
      Manager p2 = new Manager("LiNing","技术部",4578.5,786.75);
      p2.work();
    }
}

  

二、接口:Interface

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

接口的主要特点:

1、接口中的成员变量默认都是public、static、final类型的,必须被显示初始化。

2、接口中的方法默认都是public、abstract类型的。

3、接口中只能包含public、static、final类型的成员变量和public、abstract类型的成员方法。

4、接口没有构造方法,不能被实例化。

5、一个接口不能实现另一个接口,但它可以继承多个其他接口。

6、接口必须通过类来实现它的抽象方法。

7、与子类继承抽象父类相似,当类实现了某个接口时,它必须实现接口中所有的抽象方法,否则这个类必须被定义为抽象类。

8、一个类只能继承一个直接的父类,但能实现多个接口。

接口声明和实现方式如下:

具体举例如下:

多态的功能扩展
基于电脑的实例(电脑主板)
扩展(网卡、声卡、、、)

interface PCI             //扩展功能的接口(规则)
{
    public abstract void open();
    public abstract void close();
}

class MainBoard
{
    public void run()
    {
        System.out.println("Mi anBoard run");
    }
    public void usePCI(PCI p)  //PCI p = new NetCard() //接口型的引用指向自己的子类对象
    {
        p.open();
        p.close();
    }    

}

class NetCard implements PCI     // 实现网卡的连接
{
    public void open()
    {
      System.out.println("NetCard open");
    }
    public void close()
    {
       System.out.println("NetCard close");
    }
}

class SoundCard  implements PCI    // 实现声卡的连接
{
    public void open()
    {
      System.out.println("soundcard open");
    }
    public void close()
    {
       System.out.println("soundcard close");
    }
}

class DuoTaiDemo1   //测试类
{
    public static void main(String[] args)
    {
        MainBoard mb = new MainBoard();
        mb.run();
        mb.usePCI(new NetCard());
        mb.usePCI(new SoundCard());
    }
}

总结:抽象类和接口的区别

1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

   2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

   3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

   4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

5)抽象类中的方法子类必须全部实现,不然子类也是抽象类,而接口中的抽象方法子类必须全部实现,是可选择实现的。

6)抽象类是一种模板设计模式,而接口是一种行为规范。

时间: 2024-10-05 04:08:14

Java关键字整理之二的相关文章

java数据结构整理(二)

一.List接口,有序的Collection接口,能够精确地控制每个元素插入的位置,允许有相同的元素 1.链表,LinkedList实现了List接口,允许null元素,提供了get().remove().insert()方法,没有同步方法 [java] view plaincopy public void add() { LinkedList List = new LinkedList(); List.add("link1"); List.add("link2")

Java基础整理(二)

流程控制.异常处理和断言. switch表达式必须是byte.short.int或者char类型,而不是布尔变量. Java的循环语句有for while 和 do..while:while是先判断,do..while是即使是条件表达式为假,循环体至少也执行一次.do..在编制菜单选择时非常有效.for循环的执行过程:[1]执行init部分[2]执行condition部分 真->执行循环体: 假->循环终止[3]增加或者减少循环控制变量的值[4]重复执行 [2]. break和continue

JAVA笔记整理(二),下载安装JDK

Windows平台 1.登录Oracle官方网站(http://www.oracle.com/index.html),找到下载 2.选择要下载的版本,点击JDK DOWNLOAD 3.下载文件,先勾选“Accept License Agreement”,然后选择相应的版本下载 4.得到安装文件直接安装,建议不要安装在中文目录下,最好也不要安装在带有空格的目录中 Linux平台(ubuntu为例) 1.下载JDK并解压,例如已经将JDK解压到/opt/java.1.7.0下 2.修改配置文件~/.

Java知识点整理(二)

List.Set.Map典型实现 HashMap/ConcurrentHashMap Java线程池 Java线程池详解 如何更好的使用JAVA线程池 Spring MVC Spring MVC架构浅析 Spring MVC实践 SpringAutowired实现原理 Spring Boot Spring Cloud Dubbo和Spring Cloud区别.优劣势? 一致性哈希 原文地址:https://www.cnblogs.com/kaleidoscope/p/9796560.html

Kafka笔记整理(二):Kafka Java API使用

[TOC] Kafka笔记整理(二):Kafka Java API使用 下面的测试代码使用的都是下面的topic: $ kafka-topics.sh --describe hadoop --zookeeper uplooking01:2181,uplooking02:2181,uplooking03:2181 Topic:hadoop PartitionCount:3 ReplicationFactor:3 Configs: Topic: hadoop Partition: 0 Leader:

Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建

[TOC] Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建 Redis Java API使用(一):单机版本Redis API使用 Redis的Java API通过Jedis来进行操作,因此首先需要Jedis的第三方库,因为使用的是Maven工程,所以先给出Jedis的依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactI

再回首,Java温故知新(二):Java关键字

Java中类型和方法名的定义规则很宽松,但也不是可以随意定义,基本的规则为必须是英文字母开头且不能使用Java关键字,这里摘录下书中的附录,具体到每个关键字的用法会在后续的学习中陆续进行实践. 关键字 说明 abstract 标识抽象类或抽象方法 assert 查找内部程序错误 boolean 布尔类型变量 break 跳出switch语句或者循环语句 byte 8位整数类型 case switch开关语句的分支 catch try...catch语句中异常处理部分 char Unicode字符

java关键字详解

Java关键字及其作用 目录 Java关键字及其作用--- 1 一.     关键字总览:2 二.     详细解释--- 3 1.访问控制--- 3 1)私有的-- 3      private 2)受保护的-- 3      protected 3)公共的-- 3      public 2.类.方法和变量修饰符--- 3 1)声明抽象-- 3      abstract 2)类-- 4      class 3)继承.扩展-- 4      extends 4)最终.不可改变-- 4   

java基础知识(二)

1.关于static关键字总结: 1.不能在static修饰的方法中引用this变量,只能引用一些静态变量或方法,或new新的对象(可以定义局部变量). 简言之,静态方法或块中,只能引用静态的方法或变量. 2.类中的成员变量(static修饰)有缺省值,而类的定义的方法中的局部变量没有缺省值. 3.在类的构造器中,可以引用任何的静态或非静态的变量和方法,可以在非static方法中调用static方法. 4.static{}块中的代码在类装载中仅执行一次. 5.在7-7,A staticmetho