Java学习笔记8

 
======================================================================
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;
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;
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;
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;
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对象.
       }
}
 
 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炼丹狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值