Java笔记

java继承的三个特点

1.Java语言是单继承的。

class C extends A()"""//正确
class C extends A,B....""//错误

2.Java语言可以多级继承。

class A()
class B extends A()
class C extends B()

3.一个子类的直接父类是唯一的,但是一个父类可以拥有很多个子类。

class A()
class B extends A()
class C extends A()

抽象类和抽象方法的格式

:抽象方法所在的类,必须是抽象类才行。在cLass之前写上abstract即可。

抽象方法。就是加上abstract关键字,然后去掉大括号,直接分号结束。

public abstract class Fu {
    public abstract void eat();
}

抽象类和抽象方法的使用

1.不能直接创建new抽象类对象。
2.必须用一个子类来继承抽象父类。
3.子类必须覆盖重写抽象父类当中所有的抽象方法。
覆盖重写(实现):子类去掉抽象方法的abstract关键字,然后补上方法体大括号。
4.创建子类对象进行使用。
public abstract class Fu {//抽象类
    public abstract void eat();//抽象方法
}
===================================
public class Zi extends Fu {
    @Override
    public void eat(){//覆盖重写(实现):子类去掉抽象方法的abstract关键字,然后补上方法体大括号。
        System.out.println("抽象");
    }
}
===================================
public class Demo04 {
    public static void main(String[] args) {
        Zi zi = new Zi();
        zi.eat();
    }
}
​

抽象方法和抽象类的注意事项

1.抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。

理解:假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义。

2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。

理解:子类的构造方法中,有默认的super(),需要访问父类构造方法。

3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设计。

4.抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。(该子类class前面再加abstract,这样就不会报错 重点!!!)

理解:假设不重写所有抽象方法,则类中可能包含抽象方法。那么创建对象后,调用抽象的方法,没有意义。

@Override 可以检查是否重写了所有抽象方法

接口的定义基本格式

接口就是多个类的公共规范

接口是一种引用数据类型,最重要的内容就是其中的,抽象方法。

如何定义一个接口的格式:

public interface 接口名称 {
    // 接口内容
}
备注:换成了关键字interface之后,编译生成的字节码文件仍然是:  .java --> .class。

接口的抽象方法定义

在任何版本的Java中,接口都能定义抽象方法。

格式:

public abstract 返回值类型 方法名称(参数列表);

注意事项:

1.接口当中的抽象方法,修饰符必须是两个固定的关键字: public abstract

2.这两个关键字修饰符,可以选择性地省略。(刚学,不推荐)

3.方法的三要素,可以随意定义。

public interface InterfaceAbstract {
    //这4个都是抽象方法
    public abstract void method1();
    abstract void method2();
    public  void method3();
    void method4();
}

接口的抽象方法使用

接口使用步骤:

1.接口不能直接使用,必须有一个”实现类“来”实现“该接口

格式:

public class 实现类名称 implements 接口名称 {
    //..
}

2.接口的实现类必须覆盖重写(实现)接口所有的抽象方法

实现:去掉abstract关键字,加上方法体大括号。

3.创建实现类的对象,进行使用。

注意事项:

如果实现并没有覆盖重写接口所有的抽象方法,那么这个实现类自己就必须是抽象类。

接口的默认方法定义

从java 8 开始, 接口里允许定义默认方法。

格式:

public default 返回值类型 方法名称(参数列表){
    //.方法体
}

备注:接口当中的默认方法,可以解决接口升级的问题。

接口的默认方法使用

1.接口的默认方法,可以通过接口实现类对象,直接调用。

2.接口的默认方法,也可以被接口实现类进行覆盖重写

public interface InterfaceDefault {
    public abstract void method1();
    public default void method2(){
        System.out.println("这是新添加的默认方法");
    }
}
===============================================
public  class A implements InterfaceDefault{
    @Override
    public void method1() {
        System.out.println("实现了抽象方法,AAA");
    }
}
===============================================
public class B implements InterfaceDefault{
    @Override
    public void method1() {
        System.out.println("实现了抽象方法,BBB");
    }
    @Override
    public void method2(){
        System.out.println("实现类B覆盖重写了接口的默认方法");
    }
}
================================================
public class Dexter {
    public static void main(String[] args) {
        //创建了实现类对象
        A a = new A();
        a.method1();//调用抽象方法,实际运行的是右侧实现类。
        a.method2();//调用默认方法,如果实现类当中没有,会向上找接口
        System.out.println("=================================");
        B b = new B();
        b.method1();
        b.method2();
        实现了抽象方法,AAA
        这是新添加的默认方法
=================================
        实现了抽象方法,BBB
        实现类B覆盖重写了接口的默认方法
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值