JAVA基础-访问修饰符、抽象类、接口汇总

Java基础——类的访问修饰符

1.Java中的外部访问修饰符有如下四种

public,默认,abstract,final

// public,默认,abstract,final
public class Test1 {}
class Test2{}
abstract class Test3{}
final class Test4{}

  • 其中public表示任意位置都可以访问该类;
  • 不写表示默认访问修饰符,即在同一个包中可以访问;
  • abstract是表示该类为一个抽象类,不能实例化该类,即不能使用Test3 test3 = new Test3();的方式获取Test3的实例。如果要使用它则需要找一个类继承该类;
  • final表示该类不能被子类继承,该类即为最终类,不可再被继承。

2.为什么不能用private和protected修饰外部类呢?

  1. private:用private修饰外部类,表示该外部类不能被其他类访问,那么定义这个类就失去了意义,所以private只能修饰内部类。内部类的上一级是外部类,那么对应的有四种访问控制修饰符:本类(private),同包(default),父子类(protected),任何位置(public)。当一个内部类使用了private修饰后,只能在该类的外部类内部使用。
  2. protected:受保护的类,同一个包内或者不同包内的子类可以访问。如果一个类被protected修饰,外部类无法访问,那又如何继承。所以用protected也是没有意义的

3.下表为Java访问修饰符的使用情况

类的访问修饰符类内部本包子类外部包
public
protected×
default××
private×××

注意:Java的访问控制是停留在编译层的,也就是它不会在.class文件中留下任何的痕迹,只在编译的时候进行访问控制的检查。其实,通过反射的手段,是可以访问任何包下任何类中的成员,例如,访问类的私有成员也是可能的。

Java基础——抽象类 abstract

1.特点

  1. 使用abstract修饰的类
  2. 抽象类可以有抽象方法也可以有非抽象方法
  3. 抽象方法没有方法体
  4. 有抽象方法的类一定是抽象类,类声明需要使用abstract修饰
  5. 抽象类可以有构造方法,但不可以被实例化,构造方法由子类实例化的时候调用

2.实现

public abstract class Test1{
    public void test2(){}
    public abstract void test3();
}

Java基础——接口 Interface

1.概念

接口是一种被规范的标准,接口的表现在于对行为的抽象
例如插座的插口就是一个被规范的标准,所有插座都按照这些插口设计,可以供各类电器插头使用。插口就是接口,插座是实现类
接口是解决Java无法使用多继承的一种手段
接口可以作为一种顶层设计,spring的设计就是从接口开始的

2.声明

格式1:

public interface 接口名

格式2:

interface  接口名

3.特点

①接口的实现用implement关键字

public interface usb{}//定义一个接口

public class computer implements usb{}//创建一个类实现接口

②接口不能被直接实例化,可以通过多态的形式实现实例化

usb  u =new computer();

③接口中都是抽象方法和常量,不可能有非抽象方法,常量必须被赋值。

// 常量默认被public  static final
// 方法默认被public static   abstractl修饰
public final int  num1=10;√
num1=20;×
int num2=10;√
num2=20;×
上面两个正确的写法等价
public  abstract  void method1();void  method2();√
 直接int num=10,创建的a是常量

④接口的实现类
必须重写接口中的所有的普通方法,不想重写则可以是抽象类(加上abstract)
但是子类继承了该抽象类必须重写接口中的普通方法。
default修饰的方法叫默认方法,它可以有方法体,默认方法可以不被实现类重写。
但是如果一个实现类实现了多个接口,并且这些接口中有两个接口的默认方法是一样的,那么就必须在实现类中重写

4.类与接口的关系

类和类之间是继承关系
接口和接口之间是继承关系
类和接口之间是实现关系(类实现接口)

类只支持单继承(即一个子类只有一个父类),可以实现多个类

public class  A  extends  B implements C,B,D....{}

接口之间可以多重继承。

public interface a extends b,c,d.....{}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值