8.1
抽象类中成员变量的特点:‘
1.成员变量 :可以是常量也可以是变量
2.构造方法:有,不让实例化,用来初始化子类对象
3.成员方法:可以是抽象的方法,也可以是具体的方法。
abstract 不能和哪些关键字共存?
private:冲突 private不能被子类继承 肯定不能被重写
final:冲突 final修饰的方法不能被重写 只能被继承
static :无意义 静态是属于类的,这个如果是抽象方法,那调用调用这个抽象的方法就没有意义。
接口:接口是用来定义额外的功能(扩展性功能)给具体的实现---抽象方法(接口中,都是抽象方法,有没有abstract都一样)
1.接口用关键字interface表示
格式interface 接口名{} (将来 谁要拥有特接,实现接口就可以了 接口编译完后,也会生成.calss文件)
2.接口和类之间存在什么关系,实现关系
class SuperMan implements TeJi{
//实现接口中的方法}
3.接口中没有构造方法
4.无法实例化 没有办法创建对象
5.接口的实现类:
(1):可以是抽象类,没有意义
(2):具体的类 必须要实现接口的方法
利用多态:
类与类之间的多态
1.类与类之间继承
2.要有方法的重写
3.父类的引用执行子类
类与接口之间的多态
1.类与接口之间是实现的关系
2.有方法的实现\重写
3.接口名 指向 实现类(子类)对象
接口中成员的特点:
1.成员变量:只能是最终的变量(常量),并且是静态的
默认修饰符就是 public static final ----只能是这三个
2.成员方法:成员方法必须的是抽象的方法。
默认修饰符是 public abstract
1.类和类之间是继承关系:只能单继承,不能多继承,能多层继承
2.类和接口之间是实现的关系:可以单实现,也可以多实现。(可以在继承一个类的基础上,多实现)
class Student extends Person implements pashu,Aoshu,.....//例子
3.接口和接口的关系是继承的关系:可以单继承也可以多继承(Java中存在多继承吗?存在)
8.2
参数传递:
1.类名作为参数进行传递,实际是传的是对象。
2.抽象类作为参数进行传递,实际是传递的是子类的对象。
3.接口作为参数进行传递,实际上是传递的是实现类的对象。
返回值:
1.类作为返回值类型,实际返回的是类的对象。
2.抽象类作为返回值类型,实际返回的是子类的对象
3.接口作为返回值类型,实际上是返回的是实现类的对象
权限修饰符,代表什么权限:访问权限修饰符的类、方法、变量等可见范围
从大到小依次是:
修饰符: 类 同一包 同一项目
public √ √ √
default √ √
String类
String (String original):把字符串数据封装成字符串对象;String s =new String ("abc");
String(char[] value):把字符数组的数据封装成字符串对象:String s =new String(a);
(char[] a={'a','b','c'})
String (char[]value,int index,int count):把字符串的一部分数据封装成字符串对象;String s= new String(a,1,2)
常用字符串方法:
boolean equals(object obj) 判断两个字符串中内容是否相同
boolean equalsIgnoreCase(String str) 判断两个字符串中内容是否相同,忽略大小写
boolean contains(String str) 判断该字符串中是否包含 给定的字符串
boolean startWith(String str) 判断该字符串 是否以给定字符串开头
boolean endsWith(String str) 判断该字符串 是否以给定字符串结尾
boolean isEmpty( ) 判断该字符串内容是否为空的字符串“”
int length() 获取该字符串的长度
char charAt(int index) 获取该字符串中指定位置上的字符
String substring(int start) 从指定位置开始,到末尾结束,截取该字符串,返回新的字符串(左闭右开)
int indexOf(int ch) 获取给定的字符串,在该字符串中第一次出现的位置 (Ascll码值)
a-z:97-123
A-Z:65-90
0-9:48-57
int indexOf(String ch) 获取给定的字符串,在该字符串中第一次出现的位置
int indexOf(int ch,int fromIndex) 从指定位置开始,获取给定的字符,在该字符串中第一次出现的位置
byte[] getBytes() 把该字符串 转换成字节数组
char[] toCharArray() 把该字符串 转换成字符串数组
String replace(char old,char new)在该字符串中,将给定旧的字符串,用新的字符串替换
String replace(Sting old,String new)在该字符串中,将给定旧的字符串,用新的字符串替换
String trim() 去除字符串两端空格 中间的不会去除,返回新的字符串
String toLowerCase() 把该字符串转换成小写字符串
String toUpperCase() 把该字符串转换成大写字符串
String split(String regex) 按照你给的字符串分割
== 和equals()的区别?
==
如果比较的是基本数据类型,那比较的就是数值
如果比较的是引用数据类型,那比较的就是地址值
equals:
只能比较引用数据类型
来自object()如果没有重写,默认比较的是地址值
String中的equals比较的是内容。
包装类:
就是我们基本数据类型,封装成一个类,可以创建对象,这个类就叫包装类
byte shrot int long float double char boolean
Byte Short Integer Long Float Double Character Boolean
数组和集合的区别:
1.长度不同
数组的长度是固定的,而集合长度可变
2.存储的数据类型不同:
数组存的可以是基本数据类型,也可以是引用数据类型
集合只能存储引用数据类型
3.存储内容不同:
数组只能存储一个数据类型 int[] arr=new int[3];
集合可以存储多种数据类型