2019-05-27

今天学习了

抽象类和抽象方法:

有抽象方法的类必须是抽象类,抽象类不一定有抽象方法。

抽象类必须被子类重写或者子类是一个抽象类。

接口: 接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。用interface修饰为接口。

接口的声明;访问修饰符 interface 接口名 【extends 父接口1,父接口2】{

常量定义(【public static final】  类型名  常量名=常量;)

方法定义(抽象方法)【public abstract】 省略的话,也是public abstract。

}

接口的特性:继承行(多继承),传递性。

面对接口编程:

接口就是规范,就是项目中最稳定的东东! 面向接口编程可以让我们把握住真正核心的东西,使实现复杂多变的需求成为可能。

      通过面向接口编程,而不是面向实现类编程,可以大大降低程序模块间的耦合性,提高整个系统的可扩展性和和可维护性。

      面向接口编程的概念比接口本身的概念要大得多。设计阶段相对比较困难,在你没有写实现时就要想好接口,接口一变就乱套了,所以设计要比实现难!

内部类:把一个类放在另一个类的内部定义,称为内部类(innerclasses)。

作用: 1. 内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问。

      2. 内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。 但外部类不能访问内部类的内部属性。

      3. 接口只是解决了多重继承的部分问题,而内部类使得多重继承的解决方案变得更加完整。

内部类的分类:

a) 非静态内部类(外部类里使用非静态内部类和平时使用其他类没什么不同)

b) 静态内部类(用static修饰的内部类)

c) 匿名内部类

      适合那种只需要使用一次的类。语法如下:

new父类构造器(实参类表) \实现接口 () {

 //匿名内部类类体!

}

d)局部内部类

      还有一种内部类,它是定义在方法内部的,作用域只限于本方法,称为局部内部类。

String类:String类又称作不可变字符序列。

 String位于java.lang包中,Java程序默认导入java.lang包下的所有类。

 符号"+"把两个字符串按给定的顺序连接在一起,并且是完全按照给定的形式。

当"+"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。

常量池:

1. 全局字符串常量池(String Pool)

      全局字符串常量池中存放的内容是在类加载完成后存到String Pool中的,在每个VM中只有一份,存放的是字符串常量的引用值(在堆中生成字符串对象实例)。

2. class文件常量池(Class Constant Pool)

      class常量池是在编译的时候每个class都有的,在编译阶段,存放的是常量(文本字符串、final常量等)和符号引用。

3. 运行时常量池(Runtime Constant Pool)

      运行时常量池是在类加载完成之后,将每个class常量池中的符号引用值转存到运行时常量池中,也就是说,每个class都有一个运行时常量池,类在解析之后,将符号引用替换成直接引用,与全局常量池中的引用值保持一致。

你可能感兴趣的:(2019-05-27)