抽象类和接口-笔记

抽象类

抽象 关键字 abstract
1.修饰类–被abstract修饰的类是抽象类
2.修饰方法–被abstract修饰的方法是抽象方法
格式:修饰符 abstract 返回值类型 方法名(参数列表);–没有方法体

1》一旦一个类中有抽象方法,那么这个类必须是抽象类
2》抽象类中既可以都是普通方法,也可以都是抽象方法,还可以混着来
3》 抽象类不允许实例化–创建对象
4》如果一个类继承了抽象父类,那么:
方案一:继续抽象,作为抽象子类
方案二:实现抽象父类中的所有抽象方法
5》创建时如果想使用抽象父类,可以创建多态对象进行测试

抽象类中是否有构造方法?有
问题: 既然抽象类不能实例化,为什么要有构造方法呢?
解释:不是为了自己使用,而是为了子类创建对象时使用super()

抽象类既可以定义变量,也可以定义常量
抽象类既可以有(全是)普通方法,也可以(全是)抽象方法。

package oop面向对象.抽象类;

public abstract/*修饰就是抽象类*/ class Student {

    private String name;

    abstract public void study();//抽象方法
    abstract public void exam();

    public String getName() {
        return name;
    }

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

    public Student(String name) {
        this.name = name;
    }
Student(){}
}

接口

1.接口的关键字interface
2.我们通过implements建立接口与接口实现类的关系 InterImpl implements Inter
3.接口可以看作是一种特殊的抽象类,因为他里面全是抽象方法
4.实现子类如果与父接口建立了实现关系,有两种方案
方案一:作为抽象子类,不实现任何抽象方法
方案二:作为普通子类,实现父级接口中所有的抽象方法
5.接口没有构造方法,实现子类可以创建对象的原因是调用了Objectd 的无参构造
TIPS:问题:子类在创建对象时,默认调用父类的无参构造
那如果接口的实现类在没有明确指定父类是,使用的是哪个构造方法呢?
答案:如果一个类没有明确指定父类的话,默认继承顶级父类Object
所以实现类构造方法中的super(),调用的是Object类的无参构造
6.接口中没有普通成员变量,有的只是静态常量,所以当你定义int age=10;时
会自动拼接成:public static final int age=10
7.接口中的方法都是抽象方法,而且可以简写void eat();
默认会自动拼接public abstract

面向接口编程–先天设计的结果
面向抽象编程–后天向上抽取形成的结果

面向抽象编程:后天向上抽取形成的
面向接口编程:先天设计形成的,接口制定的是预先设定好的

default是表示不写修饰符,默认,如果default单词来修饰会报错

package oop面向对象.接口;

public interface/*修饰就是接口*/ Volaot {
    /*public static final*/ int MAX_HIGHT = 100;

    void fly();//飞行方法

    void stop();//停止方法
}
interface Honent{
    void helpOther();
}

类与类的关系
继承关系,而且只支持单继承
a extends b,a是子类,b是父类,子类可以使用父类的所有非私有资源,
如果子类对父类的功能不满意,是可以重写的
接口与接口的关系
继承关系,可以多继承
intter1 extends intter2,inter3,inter2和inter3是父接口,inter是子接口
接口的继承关系类似于功能的汇总,接口1拥有接口2 3的所有功能定义
inter extends inter2{}–本接口只有一个父接口
类与接口的关系
实现关系,一个类可以试想多个接口–多实现
class implments inter1,inter2{}
class implments intter3{}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值