-
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关系的表示实现关系:类实现接口
抽象类和接口的区别-
抽象类是半抽象的
-
接口是完全抽象的
-
接口中没有构造方法
-
接口和接口之间支持多继承
-
类和类之间只能单继承
-
一个类可以同时实现多个接口
-
一个抽象类只能继承一个类
-
接口里面只能出现抽象方法和常量
-
接口一般都是对行为的抽象
-
为什么使用package
-
包机制的作业是为了方便程序的管理,不同的功能的类分别存放在不同的包下面
-
-
package怎么用
-
package 加公司域名倒,javase.加功能名
-
-
import什么时候使用
-
A和B类在同一个报下,A类使用B类,不需要import
-
A和B类不在同一个报下,A类使用B类,需要import
-
-
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) {
-
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方法-
用==
package laodu03; public class Test { public static void main(String[] args) { int a = 100; int b = 100; System.out.println(a == b);//这个是用了 == 但是比较的是两个基本数据类型,结果为ture,比较两个对象能用==号吗 } }
-
用==比较两个对象
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; } }
-
用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; } }
-
重写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方法 }
-
比较两个字符串不能用== (如String)要用equals
结论:
java中 基本数据类型用==判断是否相等
java中 所有引用数据类型用equals判断是否相等
finalize()方法欢迎分享,转载请注明来源:内存溢出
评论列表(0条)