类型和类型之间的关系

类型和类型之间的关系,第1张

类型和类型之间的关系 类型和类型之间的关系
  1. is a, has a , like a

    is a :

    cat is a Animal(猫是一个动物)

凡是能够满足is a的表示继承关系

A extens B

has a:

i has a pen (我有一支笔)

反思能够满足has a 关系的表示关联属性

A{

B b;

}

like a :

cooker like a Foodmenu(厨师象一个菜单)

反思能够满足like a关系的表示实现关系:类实现接口

抽象类和接口的区别
  1. 抽象类是半抽象的

  2. 接口是完全抽象的

  3. 抽象类里面有构造方法

  4. 接口中没有构造方法

  5. 接口和接口之间支持多继承

  6. 类和类之间只能单继承

  7. 一个类可以同时实现多个接口

  8. 一个抽象类只能继承一个类

  9. 接口里面只能出现抽象方法和常量

  10. 接口一般都是对行为的抽象

impotr和包
  1. 为什么使用package

    • 包机制的作业是为了方便程序的管理,不同的功能的类分别存放在不同的包下面

  2. package怎么用

    • package 加公司域名倒,javase.加功能名

  3. import什么时候使用

    • A和B类在同一个报下,A类使用B类,不需要import

    • A和B类不在同一个报下,A类使用B类,需要import

  4. import怎么使用

    • import出现在 package之下,类名之上,

      package com;
      import com.bjpowernode.javase.chapter17.HelloWorld;
      //import com.bjpowernode.javase.chapter17.*; 还可以省略HelloWorld写成*
      public class Text {
          public static void main(String[] args) {
      ​

toString方法(需要重写
package laodu03;
​
public class Test {
    public static void main(String[] args) {
        //创建对象
        Date d = new Date(1999, 5, 29);
        //d.print();
        String h = d.toString();
        System.out.println(h);
​
​
​
    }
}
    class Date{
        int year;
       int  month;
        int  day;
        //创建无参构造
        public Date(){
​
        }
        //创建有参构造
        public Date(int year, int month, int day) {
            this.year = year;
            this.month = month;
            this.day = day;
        }
    
        public String toString(){//重写toString方法
            return this.year+"/"+this.month+"/"+this.day;
        }
    }
​
​
​

使用toString方法,要对他进行重写

equals方法
  1. 用==

    package laodu03;
    ​
    public class Test {
        public static void main(String[] args) {
               int a = 100;
                   int b = 100;
                   System.out.println(a == b);//这个是用了 == 但是比较的是两个基本数据类型,结果为ture,比较两个对象能用==号吗
               
            }
     
        }
    ​
    ​
    ​
    ​
    ​
  2. 用==比较两个对象

package laodu03;
​
public class Test {
    public static void main(String[] args) {
           //创建一个对象
            Date d1 = new Date(1999, 5, 29);
            //再创建一个对象
            Date d2 = new Date(1999, 5, 29);
           System.out.println(d1 == d2);
         System.out.println(d1 == d2);//返回结果为flase,因为==只能比较d1和d2保存的值,他们是引用,保存的都是地址,所以说false
        }
 
    }
  class Date{
        int year;
       int  month;
        int  day;
        //创建无参构造
        public Date(){
​
        }
        //创建有参构造
        public Date(int year, int month, int day) {
            this.year = year;
            this.month = month;
            this.day = day;
        }
​
    }
​
​

  1. 用equals比较两个对象(需要对equals进行重写)

package laodu03;
​
public class Test {
    public static void main(String[] args) {
           //创建一个对象
            Date d1 = new Date(1999, 5, 29);
            //再创建一个对象
            Date d2 = new Date(1999, 5, 29);
           boolean falg = t1.equals(t2)/;
               /返回结果为flase,因为objict类里面的equals依然是用==来比较,所以我们需要对equals进行重写
        }
 
    }
  class Date{
        int year;
       int  month;
        int  day;
        //创建无参构造
        public Date(){
​
        }
        //创建有参构造
        public Date(int year, int month, int day) {
            this.year = year;
            this.month = month;
            this.day = day;
        }
   
    }

  1. 重写equals方法

    package laodu03;
    ​
    public class Test02 {
        public static void main(String[] args) {
            Date d1 = new Date(1999, 11, 07);
            Date d2 = new Date(1999, 11, 07);
            System.out.println(d1.equals(d2));
            Date d3 = new Date(1999 ,11 ,11);
            System.out.println(d3.equals(d1));
    ​
        }
    ​
    }
    class Date {
        int year;
        int month;
        int day;
    ​
        //创建无参构造
        public Date() {
    ​
        }
    ​
        //创建有参构造
        public Date(int year, int month, int day) {
            this.year = year;
            this.month = month;
            this.day = day;
        }
        //重写equals方法
        @Override
        public boolean equals(Object obj) {
            int day1 = this.day;
            int month1 = this.month;
            int year1 = this.year;
           if (obj instanceof Date){
               Date t = (Date)obj;
               int day2 = t.day;
               int month2 = t.month;
               int year2 = t.year;
               if (day1 == day2 && year1 ==year2 && month1 ==month2){
                   return true;
               }
    ​
            }
            return false;
    ​
    ​
        }
    ​
        //改良一下equals方法
        
    ​
    }
    ​
  2. 比较两个字符串不能用== (如String)要用equals

结论:

java中 基本数据类型用==判断是否相等

java中 所有引用数据类型用equals判断是否相等

finalize()方法

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5438287.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存