Java基础(basis)-----抽象类和接口详解
Posted fengfuwanliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础(basis)-----抽象类和接口详解相关的知识,希望对你有一定的参考价值。
1.抽象类
1.1 abstract修饰类:抽象类
- 不可被实例化
- 抽象类有构造器 (凡是类都有构造器)
- 抽象方法所在的类,一定是抽象类
- 抽象类中可以没有抽象方法
1.2 abstract修饰方法:抽象方法
- 格式:没有方法体,包括.如:public abstract void eat();
- 抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法。
- 若子类继承抽象类,并重写了所有的抽象方法,则此类是一个"实体类",即可以实例化
- 若子类继承抽象类,没有重写所有的抽象方法,意味着此类中仍有抽象方法,则此类必须声明为抽象的!
package com.practise; /** * 抽象类 * * @author yyx 2019年8月19日 */ public class AbstractPractise public static void main(String[] args) Student stu = new Student(); /* * 报错 Person person=new Person(); */ new Person() // 匿名类 @Override void sayWord() System.out.println("我是一个匿名类"); .sayWord(); stu.sayWord(); abstract class Person abstract void sayWord(); public void readBook() System.out.println("人会读书"); public Person() System.out.println("抽象类有构造器,不能new实例化,但子类创建对象时我会先创建实例"); class Student extends Person @Override void sayWord() System.out.println("我是人的子类,我会讲话");
注意:abstract 不能用来修饰属性、构造器、private、final、static
2.接口
接口(interface) 是与类并行的一个概念
- 接口可以看做是一个特殊的抽象类。是常量与抽象方法的一个集合,不能包含变量、一般的方法
- 接口是没有构造器的
- 接口定义的就是一种功能。此功能可以被类所实现(implements)
- 实现接口的类,必须要重写其中的所有的抽象方法,方可实例化。若没有重写所有的抽象方法,则此类仍为一个抽象类
- 类可以实现多个接口。----java 中的类的继承是单继承的
- 接口与接口之间也是继承的关系,而且可以实现多继承
package com.practise; /** * 接口 * * @author yyx 2019年8月19日 */ public class InterfacePractise public static void main(String[] args) CC cPerson = new Person(); DD dPerson = new Person(); print(cPerson); printSpeak(dPerson); System.out.println(CC.age); public static void print(CC c) c.walk(); c.eat(); c.study(); public static void printSpeak(DD d) d.speak(); interface AA void walk(); interface BB void eat(); interface DD void speak(); /** * 接口支持多继承 * @author yyx * 2019年8月19日 */ interface CC extends AA, BB //常量,接口中不推荐使用 static final int age = 22; void study(); class Person implements CC, DD @Override public void walk() System.out.println("人会走路"); @Override public void eat() System.out.println("人会吃饭"); @Override public void study() System.out.println("人会学习"); @Override public void speak() System.out.println("人会说话"); public void swim() System.out.println("人会游泳");
以上是关于Java基础(basis)-----抽象类和接口详解的主要内容,如果未能解决你的问题,请参考以下文章