======================================================================
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;
publicclass TestInterface {
publicstaticvoid 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 {
publicvoid duotai(){
System.out.println("刘春阳逛动物园");
}
publicvoid jiekou(){
System.out.println("相声界的师承关系");
}
publicvoid jihe(){
System.out.println("购物车实现");
}
}
class Student {
publicvoid 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;
publicclass TestCallBack {
publicstaticvoid 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 {
publicvoid lightOn(DengPao dp) {
dp.liang();
}
}
class DengPao1 implements DengPao {
publicvoid liang() {
System.out.println("发出黄光!!");
}
}
class DengPao2 implements DengPao {
publicvoid liang() {
System.out.println("发出绿关!!");
}
}
----------------------------------------------------------------------------------------------------
例子4: 接口的设计模式:(缺省适配模式)default dector只想实现一些方法,而不想实现所有的方法.
package test;
----------------------------------------------------------------------------------------------------
例子4: 接口的设计模式:(缺省适配模式)default dector只想实现一些方法,而不想实现所有的方法.
package test;
publicclass TestDefaultAdapter {
publicstaticvoid main(String[] args) {
}
}
interface IA {
void m1();
int m2();
void m3();
}
abstractclass IAAdapter implements IA {
publicvoid m1() { // 这样的空实现是有意义的.让子类去实现(覆盖)子类想实现的方法.
}
publicint m2() {
return 0;
}
publicvoid m3() {
}
}
//只选择有意义的去实现.呵呵
======================================================================
例子5: Object类中的方法.
package test;
//只选择有意义的去实现.呵呵
======================================================================
例子5: Object类中的方法.
package test;
publicclass TsetObject(){
publicstaticvoid 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
publicboolean equals(Object o){ // 覆盖父类中的equals方法,因为有特殊的用处.
if(this==o) returntrue; // 自反性.
if(o==null) returnfalse; //
if(o instanceof Student) // 这样不行.
if(this.getClass()!=o.getClass()) returnfalse; // *.getClass()返回类的类型.
Student s=(Student)o;
if(a.name.equsls(o.name)&&a.age==o.name) returntrue;
elsereturnfalse;
}
}
-------------------------------------------------------------------------------------------------
例子6: 3个类型,6个转换.
package test;
例子6: 3个类型,6个转换.
package test;
publicclass TestInteger {
publicstaticvoid 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对象.
}
}
3万+

被折叠的 条评论
为什么被折叠?



