Java小白第十二课一一接口&多态的补充&访问修饰符

1.接口

1.1什么是接口

  • 接口(interface),在Java语言中是一个抽象类型, 是抽象方法的集合,接口通常用interface。一个类通过继承接口,来继承接口里的方法。接口并不是类,它们只是类似,但是它们的概念不同。类描述对象的属性和方法,而接口包含类要实现的方法
  • 举个例子: 一个明星,他可以是演员、歌手或者导演,这每个角色都是一个类,需要明星类去继承,但是Java中类之间只支持单继承,这个时候就要用到接口
    • 解决方法: 把每个角色都当作一个接口,让类去实现多个接口,Java 中接口之间可以支持多继承

1.2 接口的语法

  • 定义一个接口:
修饰符 interface 接口名{
   //1.成员变量: 公共静态常量 
   public static final 数据类型 常量名(大写) = 值;
   //2. 抽象方法
   //3.default方法和静态方法(Jdk1.8以后才能使用default方法)
   
}
//接口的定义
public interface ITest{
    public abstract void ×××();
}
public interface ITest1{
    public abstract void ××××();
}
//接口的多继承
public interface ITest2 extends ITest,ITestl{
    public abstract void ×××××();
}
//创建实现类
public class Test implemerits ITest2{
//重写所有抽象方法
}
  • 实现明星的例字:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

1.3 抽象类和接口的区别

  • 抽象类用abstract修饰,接口使用interface;
  • 抽象类只支持单继承,接口可以多继承;
  • 抽象类中的成员类量可以是多种类型,接口只能是公共静态常量;
  • 抽象类中成员方法可以是普通方法也可以是抽象方法,可以有构造方法
  • 接口中可以包含抽象方法和静态方法,Jdk1.8之后也可以定义defaul方法,没有构造方法

2.多态再说明

  • 概念 : 多态是一个方法具有多个方法
    • 编译时多态: 对象和方法在程序运行之前就是已确定了,执行的时候不会存在动态判断的情况了,这种称为编译时多态,实现方式就是方法重载
    • (运行时多态)使用继承: 创建父类、子类,在子类中重写父类方法中的方法。将父类作为形参,子类作为实参,那么执行时根据传入的子类不同执行子类的重写后的方法;
    • (运行时多态)使用接口: 接口作形参,实现类作为实参,那么执行时根据传入的实现类不同执行实现类的重写后的方法;
  • 优点:
    • 可替换性:多态对已存在代码具有可替代性;
    • 可扩充性: 增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。
    • 接口性: 多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或覆盖它而实现的
    • 灵活性: 多态的应用中体现了灵活多样的操作,投升效率;
    • 简化性: 对大量对象运算和操作时,这个优点特突出;

3.访问修饰符

1. 作用:

在 Java 中实现信息隐藏的是访问控制权限机制; 访问控制符包括4个: public、protected、缺省和private。

2. 权限:

  • public: 全友好 ,不受限制谁都能访问到;
  • protected: 同包友好、跨包父子友好,同包可以访问,跨包只有存在父子关系才能访问;
  • 缺省: 同包友好,跨包实现类调用接口中的默认方法
  • private: 本类友好
  • 对类修饰的是public和省缺两个

三大关键字

1.抽象abstract

1.1 一个类中有一个式以上的抽象方法,就必须声明为抽象类
1.2 抽象类中可以具体实现方法,也可以没有抽象方法;
1.3抽象美中的抽象方法必须被子类重写,如果子类不想重写就把子类也定义成抽象类
1.4 抽象类不能直接实例化,但可以用向上转型来调用父类方法
1.5 要想使用抽象类中的方法必须有一个子类继承,并用向上转型调用


2.最终的final

2.1可以用来修饰成员变量、方法及参数 非抽象类 (不能与abstract同时出现)
2.2 final修饰类: 表示不能被继承,没有子类;
2.3 final修方法: 表示不能被重写,但可以被继承
2.4 final修变量: 表示常量,只能赋值一次,不能被修改,变量必须初始化
2.5 不能修饰构造方法


3. 静态的static

class{
    static int a; //静态变量
    static void method(); //静态方法
    static{...};//静态块
    
}
  1. 修饰成员变量: 它不依赖特定的实例,被类的所有实例共享,在内存中唯一;

静态变量全局共用
2. static 变量和static 方法一般是通过类名直接访问,也可以通过实例来访问;
访问方法
3. 非静态方法可以调用(访问) 静态方法和变量,但是静态方法,不能访问非静态方法和变量;
调用
4. 静态块: 在程序运行过程中,最早执行 静态代码块里的代码,如果在其它类中调用函有静态代码块的类时,静态代码块也会执行

静态代码块优先执行
5. static不能修饰主类以及构造方法
6. 用public修饰的static 变量和static方法,在任何地方都可以通过类名直接来访问,用private修饰的static 变量和static方法,只能在声明的本类方法以及静态块中访问,在静态块中不能用 this访问,this属于非静变量;


4.三个关键字混用:

  • static 和 final 同时使用
    • 修饰成员变量或方法时,可以理解为"全局常量";
    • 对于变量,一但给值就不能修改,并且通过类名可以访问;
    • 对于方法,不能重写,可以通过类名访问
  • abstract和static
    • 不能在一起用,static是需要确定的方法体,而abstract不能有方法体
  • abstract和final
    • final修饰的方法不能被继承,不能被重写
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值