栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java.抽象类&接口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java.抽象类&接口

1.1抽象类的概念 抽象类主要指不能具体实例化的类并且使⽤ abstract 关键字修饰,也就是不能创建对象。 1.2 抽象⽅法的概念 抽象⽅法主要指不能具体实现的⽅法并且使⽤ abstract 关键字修饰,也就是没有⽅法体。 2.3 抽象类和抽象⽅法的关系 抽象类中可以有成员变量、构造⽅法、成员⽅法、静态成员等。 抽象类中可以没有抽象⽅法,也可以有抽象⽅法。 有抽象⽅法的类必须是抽象类,因此真正意义上的抽象类应该具有抽象⽅法且使⽤ abstract 关键字修饰。 2.4 抽象类的实际意义 抽象类的实际意义不在于创建对象⽽在于被继承。 当⼀个类继承抽象类后必须重写抽象⽅法,否则该类也变成抽象类.
eg.void say()
   
public abstract class TesAbstract {

    public TesAbstract() {
    }

    
    public abstract void show();
}
public class SubTesAbstract extends TesAbstract {
    public void show(){
        System.out.println("被迫写的");
    }
    public void test(){
        System.out.println("独有的方法");
    }
    public static void main(String[] args){
        TesAbstract testabstract = new SubTesAbstract();
        testabstract.show();
        ((SubTesAbstract)testabstract).test();
    }

}
              2  接⼝ 2.1 基本概念 2.1.1接⼝是⽐抽象类还抽象的类,体现在所有⽅法都为抽象⽅法。 2.1.2定义类的关键字是 class ,⽽定义接⼝的关键字是 interface 。 2.1.3可以实现多继承。  
public class Goldhavemoney implements People,Child{
    @Override
    public void costMoney() {
        System.out.println("iphone13 pro max, ipad pro2021,百达翡丽");
    }

    @Override
    public void eat() {
      System.out.println("炸鸡,汉堡,奶茶");
    }
    public static void main(String[] arg) {
        People people = new Goldhavemoney();
        people.eat();
        System.out.println("--------------------------------");
        Child child = new Goldhavemoney();
        child.costMoney();
    }
}
 interface Child {
    void costMoney();
}
 interface People {
    void eat();
}
package com.java.bean;

public class Goldhavemoney implements Child{
    @Override
    public void costMoney() {
        System.out.println("iphone13 pro max, ipad pro2021,百达翡丽");
    }

    @Override
    public void eat() {
      System.out.println("炸鸡,汉堡,奶茶");
    }
    public static void main(String[] arg) {
        People people = new Goldhavemoney();
        people.eat();
        System.out.println("--------------------------------");
        Child child = new Goldhavemoney();
        child.costMoney();
        child.eat();
        System.out.println("--------------------------------");
        Goldhavemoney jinyouxin = new Goldhavemoney();
        jinyouxin.costMoney();
        jinyouxin.eat();
    }
}
public interface Child extends People{
    void costMoney();
}
public interface People {
    void eat();
}

2.2类与接口的关系

名字关键字关系
类与类extends单继承
类与接口implements可以多继承
接口与接口extends可以多继承

注意

抽象类添加子类可以不重写,而接口增加方法实现类必须重写(Java8 before),从Java8开始添加新特性,接口可以有非抽象方法和静态方法,但是非静态方法用default,而且可以有私有方法。

 1

public interface Child extends People{
    void costMoney();
    default void play(){
        System.out.println("可以重写,也可以不重写");
    }
}
2.为了解决default里面代码的重复性,采用提取,打包成方法(private)
public interface Child extends People{
    void costMoney();
    default void play1(){
        //System.out.println("可以重写,也可以不重写");
        play();
    }
    default void play2(){
        //System.out.println("可以重写,也可以不重写");
        play();
    }
    private void play(){
        System.out.println("可以重写,也可以不重写");
    }
}

static void play() {

}

 main方法中可以用Child.play();调用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号