|
[笔记]java学习笔记6--接口
1 接口:定义接口关键字interface,接口是一种特殊的抽象类
接口中的所有方法默认都是public abstract方法
接口中的所有属性默认都是public static final的属性
2 一个类可以实现多个接口class A implements interfaceIA,interfaceIB
所谓实现一个接口就是实现接口里定义所有的方法,关键字implements
接口的父类不能是类. interfaceIA extends classA !!!error
3 子类 父类
接口 类 !error
接口 接口 多继承 关键字extends
类 类 单继承
类 接口 implements接口
4 接口中没有构造方法.
5 泛化:由子类抽象出父类的过程
特化:由父类扩展出子类的过程
6 接口作用:把标准的制定者和标准的实现者分离,易于可扩展性和可移植性.
接口回调:先有接口的定义,再有接口的使用者,最后把接口的实现者传到接口的使用者中,
接口的使用者会通过接口来调用接口实现者的方法。
public class TestJDBC {
public static void main(String []args){
Driver d=getDriver(args[0]);
d.connect();
}
static Driver getDriver(String name){
if(name.equals("MySQL")) return new MySQLDriver();
else if(name.equals("DB2")) return new DB2Driver();
else return new OracleDriver();
}
}
interface Driver{
void connect();
}
class MySQLDriver implements Driver{
public void connect() {
System.out.println("connected MySQLDriver");
}
}
class DB2Driver implements Driver{
public void connect() {
System.out.println("connected DB2Driver");
}
}
class OracleDriver implements Driver{
public void connect() {
System.out.println("connected OracleDriver");
}
}
7 注意点:
(1)一个文件只能有一个public接口,且与文件名相同.
(2)在一个文件中不能同时定义一个public接口和一个public类.
(3)接口与类之间只有实现关系,没有继承关系.
(4)抽象类与类之间只有继承关系没有实现关系.
(5)接口与接口之间只有继承关系,且允许多继承.
(6)接口中可以不写public,但在子类实现接口的过程中public不可省略.
8 接口和抽象类
(1)接口中不能有具体的实现,但抽象类可以。
(2)一个类要实现一个接口必须实现其里面所有的方法,而抽象类不必。
(3)通过接口可以实现多继承,而抽象类做不到。
(4)接口不能有构造方法,而抽象类可以。
(5)实体类与接口之间只有实现关系,而实体类与抽象类只有继承关系。
9 修饰符 类 属性 方法 局部变量
final * * * *
static * *
abstract * *
public * * *
protected * *
default * * *
private * *
10 ==和equals的区别
基本类型用==去比较比的是值是否相等.
如果是对象用==比是两个引用中的地址值是否相等
判断两对象内容是否相等时用equals()方法,equals 比较两个对象内容是否相等.
11 toString()方法:给出这个对象的字符串表达形式,返回一个字符串.
当直接打印出对象的引用,它实际输出的是这个对象的toString()方法的返回值.
Student s1=new Student();
System.out.println(s1); // toString()方法的返回值
Object类toString()方法返回值两部分: 包名加类名@地址 day5.Student@757aef
在java里只能用这个方法来看对象的地址,但只能看,不能操作这个地址.
字符串相加时,也会去调toStirng()方法,"hello"+str1.
12 主方法的参数:字符串数组argv java Test argv[0]
//与c++不同,命令行第三个元素才是数组的第一个元素
主方法是程序的入口,主方法必须声明为静态的.
13字符串赋值形式:
String s1=new String("haha"); //新开辟空间,生成一个新的字符串对象.
String s2="haha"; //在串池找
int a=5;
int b=a<<33;
System.out.println(b); //结果b=10,移位运算时系统会对32求余
14 对于字符串:
(1)对象池
(2)不变模式: 生命周期内值不变, String s1=new String("Hello");
一个字符串实际是用一个字符数组来作底层的保存空间,所以不可改变值.
在需要频繁改变字符串值时建议用StringBuffer() 可以改变值,不创建新对象
15 基本类型的包装类.把基本类型包装成相应的类类型.符合一切皆对象的天理.
八种,保留基本类型效率高.
除了int 和char,其余类型首字母大写即成包装类
int Integer
char Character
int Integer String之间的类型转换(最常用的)
int a =12;
int 到 Integer Integer aa = new Integer(a);
Integer 到 int int i = aa.intValue();
Int 到 String String str = String.valueOf(i);
String 到 int int ii = Integer.parseInt(str);
Integer 到 String String str = aa.toString();
String 到 Integer Integer bb = Integer.valueOf(str);
int a=20;
String s=a+""; //加空串也可以得到一个字符串.
好好学习,天天向上 |
|