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;
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;
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;
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;
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;
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 对象 .
       }
}
 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

炼丹狮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值