JAVA进阶--语法知识:包、权限修饰符、final、常量、枚举--2022年8月30日

第一节  包

  1、导包

    相同包下的类可以直接访问,不同包下的类必须导包,才可以使用!导包格式:import 包名.类名

    加入一个类中需要用到不同类,而这两个类的名称是一样的,那么默认只能导入一个类,另一个类要带包名访问

第二节  权限修饰符  

  1、权限修饰符是什么?

    有四种作用范围由小到大(private->缺省->protected->public)

 

     注意:protected不同包下的子类可以访问的意思是父类有一个project方法,子类继承父类,子类里面用子类对象访问父类的project方法,直接在子类里面用父类对象访问父类的project方法也是不行的。

第三节  final  

  1、final的语法 

第四节  常量   

  1、常量 public static final

 

    一般常量可以做信息标志和分类

 

 

第五节  枚举  

  1、枚举

 

===

 

 

   枚举适合做信息标志和分类,常量适合存值!!具体应用要看具体的应用场景

第六节  抽象类

  1、抽象类、抽象方法是什么样的

    都是用abstract修饰的;抽象方法只有方法签名,不能写方法体

    一个类中定义了抽象方法,这个类必须申明成抽象类

  2、抽象类的基本作用是啥

    作为父类,用来被继承的

  3、继承抽象类有哪些要注意

    一个类如果继承了抽象类,那么这个类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类

  4、抽象类的特征和注意事项

    类有的东西,抽象类都有

    抽象类中可以没有抽象方法,但是有抽象方法的一定是抽象类

    一个类继承了抽象类,一定要重写抽象类里的所有抽象方法,否则这个类必须要定义成抽象类

    抽象类不能创建对象(此观点不能动摇),为什么?

      反证法:如果抽象类可以创建对象,那抽象类里的抽象方法根本都跑不了,连方法体都没有

  5、final和abstract是什么关系

    互斥关系

    abstract定义的抽象类作为模板让子类继承,final定义的类不能被继承

    抽象方法定义通用功能让子类重写,final定义的方法子类不能重写

   6、抽象类和抽象方法实现模板方法模式

    使用场景:当系统中出现同一个功能多处在开发,而该功能中大部分代码是一样的,只有其中部分可能不同的时候

    模板方法模式实现步骤:

      把功能定义成一个所谓的模板方法,放在抽象类中,模板方法中只定义通用且能确定的代码

      模板方法中不能决定的功能定义成抽象方法让具体子类去实现

  7、模板方法模式解决了什么问题

    提高了代码的复用性

    模板方法已经定义了通用结构,模板方法不能确定的部分定义成抽象方法,交给子类实现,因此,使用者只需要关心自己需要实现的功能即可

  8、模板方法模式里面的方法最好加final修饰,这样会更专业,是为什么呢?

    模板方法是给子类直接使用的,不是让子类重写的,一旦子类重写了模板方法,则模板方法就失效了,因此,加上final后可以防止子类重写模板方法,这样更安全专业。

复制代码
package com.maofugui.d1_package.d2_package;

public abstract class Student {

    //  模板方法模式
    public final void write(){
        System.out.println("我的爸爸");
        System.out.println("一样的第一段");

        //正文部分(每个子类都要写的,每个子类写的情况不一样
        //因此,模板方法把正文部分定义成抽象方法,交给具体的子类去完成
        System.out.println(writeMain());

        System.out.println("一样的结尾");
    }

    public abstract String writeMain();

}
复制代码
package com.maofugui.d1_package.d2_package;

public class StudentZhong extends Student{
    @Override
    public String writeMain() {
        return "中学生的正文";
    }
}
package com.maofugui.d1_package.d2_package;

public class StudentXiao extends Student{
    @Override
    public String writeMain() {
        return "小学生的正文";
    }
}
复制代码
package com.maofugui.d1_package.d2_package;

public class Test {
    public static void main(String[] args){
        StudentXiao studentXiao = new StudentXiao();
        studentXiao.write();

        StudentZhong studentZhong = new StudentZhong();
        studentZhong.write();
    }
}
复制代码

第七节  接口

  1、接口是什么

    public implements 接口名{}

    接口是一种规范,规范一定是公开的

    JDK8前,接口中只能有抽象方法和常量

      常量:由于接口体现规范思想,规范默认都是公开的,所以代码层面public static final可以省略不写

      抽象方法:由于接口体现规范思想,规范默认都是公开的,所以代码层面public abstract可以省略不写

   2、接口的用法

    public class 类名 implements 接口名,接口名......

    接口是用来被类实现的,实现接口的类称为实现类。实现类可以理解为所谓的子类。

    接口可以被类单实现,也可以被类多实现

    注意:一个类实现接口,必须重写完全部接口的全部抽象方法,否则这个类需要定义成抽象类

  3、基本小结

    类和类的关系:单继承

    类和接口的关系:多实现

    接口和接口的关系:多继承,一个接口可以同时继承多个接口

   4、接口多继承的作用

    规范合并,整合多个接口为同一个接口,便于子类实现

  5、JDK开始后新增了哪些方法?

    默认方法:default修饰,实现类对象调用

    静态方法:static修饰,必须用当前接口名调用

    私有方法:private修饰,jdk9开始才有的,只能在接口内部被调用

    他们都会默认被public修饰

    注意:jdk8新增的3种方法我们自己在开发中很少使用,通常是java源码涉及到。现阶段需要理解、识别语法。,明白调用关系即可。 

  6、接口的注意事项

    接口不能创建对象

    一个类实现多个接口,多个接口中有同样的静态方法不冲突,因为接口中的静态方法要用接口名.静态方法调用

    一个类继承了父类,同时又实现了接口,父类中和接口有同名的方法,默认用父类的

    一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写该方法即可

    一个接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承,比如被继承的两个接口有名字,形参列表都一样的函数,但返回值不一样,那就会报错

posted @   漫漫修行路  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示