1.抽象类和抽象方法:使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。
2.包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。
抽象类的使用要点:
1. 有抽象方法的类只能定义成抽象类
2. 抽象类不能实例化,即不能用new来实例化抽象类。
3. 抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。
4. 抽象类只能用来被继承。
5. 抽象方法必须被子类实现。
接口的作用:可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。
如何定义接口:
1. 访问修饰符:只能是public或默认。
2. 接口名:和类名采用相同命名机制。
3. extends:接口可以多继承。
4. 常量:接口中的属性只能是常量,总是:public static final 修饰。不写也是。
5. 方法:接口中的方法只能是:public abstract。 省略的话,也是public abstract。
内部类的概念:
我们把类定义成独立的单元。有些情况下,我们把一个类放在另一个类的内部定义,称为内部类(innerclasses)。内部类可以使用public、default、protected 、private以及static修饰。而外部顶级类(我们以前接触的类)只能使用public和default修饰。
内部类的作用:
1. 内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问。
2. 内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。 但外部类不能访问内部类的内部属性。
3. 接口只是解决了多重继承的部分问题,而内部类使得多重继承的解决方案变得更加完整。
内部类的分类:
要分为成员内部类(非静态内部类、静态内部类)、匿名内部类、局部内部类。
String类和常量池:
常量池也分了以下三种:全局字符串常量池 ,class文件常量池,运行时常量池
String类的常用方法:
char charAt(int index) 返回字符串中第index个字符
Boolean equalsIgnoreCase(String other) 比较字符相等 不考虑大小写的问题,如果相等则返回为true 否则返回false
Int indexof(String str) lastIndexOf()查找指定字符串出现的位置
Int length()返回字符串的长度
String replace(char oldChar,char newChar)返回新的字符串,使用newChar代替
字符串中所有oldChar 字符
Boolean startsWith(String prifix) 如果字符串是以prifix开始的则返回true否则返回false
Boolean endsWith(String prifis) 如果字符串是以prifix结束的则返回true否则返回false
String substring (int beginIndex,intendIndex)截取成新的字符串,从beginIndex
到endsIndex-1截止
字符串的相等判断:
判断字符串是否相等不要使用"=="
要测试两个字符串除了大小写区别外是否是相等的,需要使用equalsIgnoreCase方法
quals方法用来检测两个字符串内容是否相等。如果字符串s和t内容相等,则s.equals(t)返回true,否则返回false。