java基础 修饰符+接口

权限修饰符

作用:1、可用来控制一个成员能够访问的范围

           2、可以修饰成员变量,方法,构造器,内部类。

在不同包下 子类 继承 父类 后 除了 private修饰的成员变量不能调用 别的都能在实例化子类对象后使用 

final修饰符(最终的,不可改变的)

1、关键字final可以修饰变量、方法,还有类。

2、final修饰的类无法被继承(多用于工具类)。

3、final修饰的方法无法被覆盖,无法被重写。

4、final修饰的变量是基本类型时 变量存储的数据值不能发生改变。

5、final修饰的变量是引用类型时 变量存储的地址值不能发生改变,但是地址指向的对象内容可以改变。

可通过 public static final String 变量名 =  "值"  来定义字符串常量 (其他基本数据类型均可) 方便复用提高可读性  (多用于系统的配置信息等)

抽象类 abstract

当子类都有该方法但实现方法不同时使用 (可用来规范方法命名、返回值、接收参数等),在抽象类中 可以调用抽象方法 即使他没被重写(因为子类只有重写抽象方法成为具体类后才能被实例化)

特点:

1、抽象类中可以没有抽象方法,但有抽象方法的类必须是抽象类。

2、抽象方法必须在子类中进行重写,除非子类也是抽象类。

3、抽象类和 final不能同时存在 因为final修饰的类不能被继承 类中的实例方法也不能再被重写

4、抽象类不能直接创造对象(实例化)

5、抽象类可以有构造方法,目的是让子类来调用构造方法初始化

//抽象类
//当执行 Myfather myfather = new Myfather();会报错 'Myfather' 为 abstract;无法实例化
public abstract class Myfather {

    public  void  write(){
        System.out.println("《我的爸爸》");
        System.out.println("我的爸爸是啥样,来说说:");
        System.out.println(text());
        System.out.println("我的爸爸简直太好了:");
    }
    public abstract String text();
}

//子类
public class Small extends Myfather {
    @Override //重写抽象类中方法
    public String  text() {
        return "我是小学生";
    }
}

接口 interface

接口可以来规范类中必须有哪些方法

接口特点

1,接口中可以定义常量,不能定义变量,接口中的属性默认都被 public static final 修饰

2,接口中所有的方法都是抽象方法,接口中方法都会自动用 public abstract 修饰

3,接口不能被实例化(即 new 一个对象)

4,接口中不能有构造器(构造函数,构造方法)

5,一个接口可以继承多个接口,但不能继承类,一个类也可以继承多个接口

6,接口的实现类必须实现接口中全部的方法,或者定义为抽象类

//接口使用 interface 声明
//接口 Inter1 
public interface Inter1 {
    public static final String name = "黑马"; //public static final 可省略 在接口中会默认生成
    void run();// 不需要用 public abstract 声明 默认会有
    default void see
}
//使用
public class Cs1 implements Inter1 {
    @Override
    public void run() {
        System.out.println("run");
    }
}

接口注意事项

原因:

1、接口中没有构造方法,所以接口不能new对象来创造

2、静态方法不支持子类去使用,只能接口去调用

3、就近原则 先从本类中找,没有再去找上级

4、就近原则  重写后无法在使用接口中的同名默认方法

5、如下图(重载)

//可以
public interface Inter1 {
    void run();
}
public interface Inter2 {
    void run();
}
//可以
public interface Inter1 {
    void run();
}
public interface Inter2 {
    void run(String name);
}

//不可以

public interface Inter1 {
    void run();
}
public interface Inter2 {
    String run();
}
//不可以
public interface Inter1 {
    void run(String name);
}
public interface Inter2 {
    String run(String name);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值