Java学习记录(三)

java学习记录(三)

抽象类和抽象方法

抽象(abstract)的使用

  1. 有抽象方法的类只能定义成抽象类
  2. 抽象类不能实例化,即不能用new来实例化抽象类
  3. 抽象类可以包含属性,方法,构造方法。但是构造方法不能用来new实例,只能用来被子类调用
  4. 抽象类只能用来被继承
  5. 抽象方法必须被子类实现
public class Test {
    public static void main(String[] args) {
//        Student s = new Student("ddd"); // 抽象类不能创建对象
        Student s = new SxtStu();
        s.study();
    }
}

class SxtStu extends Student {

    @Override
    public void study() {
        System.out.print("好好学习好好听课");
    }

}
public abstract class Student {

    private String name;

    abstract public void study();


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    Student(){};
}

接口

  • 接口指明了一个类必须要做什么和不能做什么,相当于类的蓝图
  • 一个接口就是描述一种能力

为什么要用接口?

接口就是比“抽象类”还“抽象”的“抽象类”,实现了:规范和具体实现的分离

接口的声明

/* 文件名 : NameOfInterface.java */
import java.lang.*;
//引入包
 
public interface NameOfInterface
{
   //任何类型 final, static 字段
   //抽象方法
}

接口有以下特性

  • 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
  • 接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
  • 接口中的方法都是公有的。
interface Animal {
   public void eat();
   public void travel();
}

接口的实现

当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。

类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

实现一个接口的语法,可以使用这个公式:

...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...
public class MammalInt implements Animal{
 
   public void eat(){
      System.out.println("Mammal eats");
   }
 
   public void travel(){
      System.out.println("Mammal travels");
   } 
 
   public int noOfLegs(){
      return 0;
   }
 
   public static void main(String args[]){
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
}

接口的多继承

// 文件名: Sports.java
public interface Sports
{
   public void setHomeTeam(String name);
   public void setVisitingTeam(String name);
}
 
// 文件名: Football.java
public interface Football extends Sports
{
   public void homeTeamScored(int points);
   public void visitingTeamScored(int points);
   public void endOfQuarter(int quarter);
}
 
// 文件名: Hockey.java
public interface Hockey extends Sports
{
   public void homeGoalScored();
   public void visitingGoalScored();
   public void endOfPeriod(int period);
   public void overtimePeriod(int ot);
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 1,278评论 0 5
  • java继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继...
    863cda997e42阅读 801评论 0 1
  • 抽象类的定义 Java核心技术卷1: 1.为了提高程序的清晰度,包含一个或者多个抽象方法的类本身必须被声明为抽象的...
    Sunflow007阅读 512评论 0 0
  • java 学习笔记 void关键字 学过Java的人都知道void的意思是空,如果你去问老手,老手会告诉你说:“v...
    神刀阅读 269评论 0 0
  • 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?答:可以有多个类,但只能有一个publ...
    岳小川阅读 1,031评论 0 2

友情链接更多精彩内容