======================================================================
java 第八天
======================================================================
(1) 定义 , 实现 , 使用 .
先有使用者 , 后有实现者 . 他只使用接口 , 不使用具体的接口的实现 . 接口
如果哪一天实现了这个接口 , 就把这个对象传给接口的使用者 , 这样使用者会通过接口调用实现者中的方法 . 而不是接口 .
(2) 接口的设计模式 :( 缺省适配模式 )default dector
只想实现一些方法 , 而不想实现所有的方法 .
(3) 接口和抽象类的区别 . 呵呵
答 : 一个类可以实现多个接口 , 但是不能继承多个抽象类 . 接口是特殊的抽象类 . 一个接口就是一个抽象类 , 而且是一个特殊的抽象类 , 所有属性默认都是公开静态常量 , 所有的方法默认都是公开抽象方法 . 接口之间可以多继承 . 一个类在继承另外一个类的同时 , 还可以实现多个接口 ,
(4) java 中所有类的根类 ,object,
申请一个 Object o=new 对象 , 也就是 , 所有的类都有的方法 , 属性 .
(5) Object 中的方法 fianlize(), 别在 fianlize() 写释放资源的代码 .
(6) finalize() 一般由垃圾收集器使用 , 当一个对象被收集的时候会调用这个方法 .
(7) 垃圾收集 : 就像餐饮业的收集盘子 . 垃圾收集是在不得不收集的时候才收集 , 也就是保证系统效率最大 .
(8) toString();
(9) 8 种数据类型 , 包装成 8 种对象 .( 不怎么重要 .)
int Integer; 包装类 .
char --> Character;
double -> Double;
boolean --> Boolean
3 个类型 ,6 个转换 .
Stirng --->int
===============================================================================
例子 1: 先定义接口 ( 达内制定了要教 CoreJava 这个课程的课件 ), 然后有了学生要来上课 , 也就是有了这个接口的使用者 , 因此要进行这个接口的实现 ,Huxz 对象实现了这个接口 , 然后我们把 Huxz 这个对象传入学生学习的方法中 , 学生就可以学习了 , 这就是先定义接口 , 然后有接口的使用者 , 然后在实现接口 : 也就是针对接口编程 .
package test;
java 第八天
======================================================================
(1) 定义 , 实现 , 使用 .
先有使用者 , 后有实现者 . 他只使用接口 , 不使用具体的接口的实现 . 接口
如果哪一天实现了这个接口 , 就把这个对象传给接口的使用者 , 这样使用者会通过接口调用实现者中的方法 . 而不是接口 .
(2) 接口的设计模式 :( 缺省适配模式 )default dector
只想实现一些方法 , 而不想实现所有的方法 .
(3) 接口和抽象类的区别 . 呵呵
答 : 一个类可以实现多个接口 , 但是不能继承多个抽象类 . 接口是特殊的抽象类 . 一个接口就是一个抽象类 , 而且是一个特殊的抽象类 , 所有属性默认都是公开静态常量 , 所有的方法默认都是公开抽象方法 . 接口之间可以多继承 . 一个类在继承另外一个类的同时 , 还可以实现多个接口 ,
(4) java 中所有类的根类 ,object,
申请一个 Object o=new 对象 , 也就是 , 所有的类都有的方法 , 属性 .
(5) Object 中的方法 fianlize(), 别在 fianlize() 写释放资源的代码 .
(6) finalize() 一般由垃圾收集器使用 , 当一个对象被收集的时候会调用这个方法 .
(7) 垃圾收集 : 就像餐饮业的收集盘子 . 垃圾收集是在不得不收集的时候才收集 , 也就是保证系统效率最大 .
(8) toString();
(9) 8 种数据类型 , 包装成 8 种对象 .( 不怎么重要 .)
int Integer; 包装类 .
char --> Character;
double -> Double;
boolean --> Boolean
3 个类型 ,6 个转换 .
Stirng --->int
===============================================================================
例子 1: 先定义接口 ( 达内制定了要教 CoreJava 这个课程的课件 ), 然后有了学生要来上课 , 也就是有了这个接口的使用者 , 因此要进行这个接口的实现 ,Huxz 对象实现了这个接口 , 然后我们把 Huxz 这个对象传入学生学习的方法中 , 学生就可以学习了 , 这就是先定义接口 , 然后有接口的使用者 , 然后在实现接口 : 也就是针对接口编程 .
package test;
public
class
TestInterface {
public
static
void
main(String[] args) {
Student s =
new
Student();
CoreJava teacher =
new
Huxz();
s.study(teacher);
}
}
interface
CoreJava {
void
duotai();
void
jiekou();
void
jihe();
}
class
Huxz
implements
CoreJava {
public
void
duotai(){
System.
out
.println(
"
刘春阳逛动物园
"
);
}
public
void
jiekou(){
System.
out
.println(
"
相声界的师承关系
"
);
}
public
void
jihe(){
System.
out
.println(
"
购物车实现
"
);
}
}
class
Student {
public
void
study(CoreJava cj) {
//
这样就可以针对接口编程
,
多态用在参数上
,
//CoreJava cj = new Huxz(); //
这一个就可以省掉
.
cj.duotai();
cj.jiekou();
cj.jihe();
}
}
---------------------------------------------------------------------------------------------------------------
例子3:现有接口的定义,然后接口的使用者,和接口的实现这分别编码,最后再和在一起用.
//自己调试的时候的经验: 如果要把class文件写在一个文件里,就要是默认属性,如果是public属性的话会报错.
//要是.java文件在不同包的时候请注意权限的约束,注意,接口最好独立写成一个.java文件,然后属性是public.
package test;
---------------------------------------------------------------------------------------------------------------
例子3:现有接口的定义,然后接口的使用者,和接口的实现这分别编码,最后再和在一起用.
//自己调试的时候的经验: 如果要把class文件写在一个文件里,就要是默认属性,如果是public属性的话会报错.
//要是.java文件在不同包的时候请注意权限的约束,注意,接口最好独立写成一个.java文件,然后属性是public.
package test;
public
class
TestCallBack {
public
static
void
main() {
DengPao dp1 =
new
DengPao1();
DengPao dp2 =
new
DengPao2();
TaiDeng td =
new
TaiDeng();
td.lightOn(dp1);
//
接口回调
.
td.lightOn(dp2);
}
}
interface
DengPao {
void
liang();
}
class
TaiDeng {
public
void
lightOn(DengPao dp) {
dp.liang();
}
}
class
DengPao1
implements
DengPao {
public
void
liang() {
System.
out
.println(
"
发出黄光
!!"
);
}
}
class
DengPao2
implements
DengPao {
public
void
liang() {
System.
out
.println(
"
发出绿关
!!"
);
}
}
----------------------------------------------------------------------------------------------------
例子4: 接口的设计模式:(缺省适配模式)default dector只想实现一些方法,而不想实现所有的方法.
package test;
----------------------------------------------------------------------------------------------------
例子4: 接口的设计模式:(缺省适配模式)default dector只想实现一些方法,而不想实现所有的方法.
package test;
public
class
TestDefaultAdapter {
public
static
void
main(String[] args) {
}
}
interface
IA {
void
m1();
int
m2();
void
m3();
}
abstract
class
IAAdapter
implements
IA {
public
void
m1() {
//
这样的空实现是有意义的
.
让子类去实现
(
覆盖
)
子类想实现的方法
.
}
public
int
m2() {
return
0;
}
public
void
m3() {
}
}
//只选择有意义的去实现.呵呵
======================================================================
例子5: Object类中的方法.
package test;
//只选择有意义的去实现.呵呵
======================================================================
例子5: Object类中的方法.
package test;
public
class
TsetObject(){
public
static
void
main(String[] args){
Object o=
new
Student(
"chenzp"
);
System.out.println(o);
//
结果
:
当打印对象的时候就是
toStirng()
方法
.
//
返回一个对象的字符串表示形式
System.out.println(o.toString);
// toString
返回值是一个字符串
(Student@754aef)//
地址
:
==
//
判断变量里边的存的值是否一样
.
Student s1=
new
Student(
"chenzq"
,30);
Student s2=s1;
Student s3=
new
Student(
"chenzq"
,30);
System.out.println(s1==s2);
// true;
这样相当有判断
System.out.println(s1==s3);
// false;
相当于比较指向的内容
(
地址
)
是否相同
.
System.out.println(s1.equls(s3));
// false;
相当于比较指向的内容
(
地址
)
是否相同
.
}
}
class
A
extends
B{
// Java
中不允许循序继承
.
}
class
B
extends
A{
}
class
Student(){
Stirng name;
int
age;
Student(String name,
int
age){
this
.name=name;
}
public
String getName(){
return
name;
}
public
String toString(){
//
覆盖父类的
toString
方法
.
return
"
姓名
:"
+name+
"
年龄
:"
+age;
}
//
要满足自反性
,a.equals(a)
永远真
;
//
对称性
:a.equal(b),b.equls(b);
//
传递性
a.equals(b)&&b.equals(c)
为真
,
则
a.equals(c)
为真
;
// conversion
public
boolean
equals(Object o){
//
覆盖父类中的
equals
方法
,
因为有特殊的用处
.
if
(
this
==o)
return
true
;
//
自反性
.
if
(o==
null
)
return
false
;
//
if
(o
instanceof
Student)
//
这样不行
.
if
(
this
.getClass()!=o.getClass())
return
false
;
// *.getClass()
返回类的类型
.
Student s=(Student)o;
if
(a.name.equsls(o.name)&&a.age==o.name)
return
true
;
else
return
false
;
}
}
-------------------------------------------------------------------------------------------------
例子6: 3个类型,6个转换.
package test;
例子6: 3个类型,6个转换.
package test;
public
class
TestInteger {
public
static
void
main(String[] args) {
int
a = 10;
Integer ia =
new
Integer(a);
// int
型的转换成
Integer
对象
.
int
b = ia.intvalue();
//
把
Integer
对象转换成
int
型
.
String s = String.valueOf(a);
//
把
int
型转换成
String
型
.
// String s=""+a;
int
c = Integer.parseInt(s);
//
把
String
转换成
int
型
.
String s2 = ia.toString();
//
把
ia
对象转换成
String
Integer ib = Integer.valueOf(s2);
//
把
String
转换成
Integer
对象
.
}
}