12 Object 包
Object:所有类的根类.
Object是不断抽取而来,具备着所有对象都具备的共性内容.
常用的共性功能:
class Person extends Object { private int age; Person(int age) { this.age =age; } /* //比较Person的年龄.是否是同龄人 public boolean compare(Person p) { return this.age == p.age; } */ public boolean equals(Object obj) { if(!(obj instanceof Person)) { //return false; //此处你抛编译时的Exception你抛不出去 //因为需要声明,父类并没有异常,子类不可能超出 //父类的异常. throw new ClassCastException("类型错误"); } Person p = (Person)obj; return this.age == p.age; } } class Test { } class Demo { public static void main(String[] args) { Person p1 = new Person(20); Person p2 = new Person(20); //Person p3 = p1; Test d = new Test(); //System.out.println(p1==p2); System.out.println(p1.equals(d)); } }
equals:一般都会去覆盖此方法,根据对象的特有内容,建立判断对象是否相同的依据.
hashCode():返回该对象的哈希码值.
getClass():返回Object运行时类.
class Person extends Object { private int age; Person(int age) { this.age =age; } } class Demo { public static void main(String[] args) { Person p1 = new Person(20); Person p2 = new Person(20); Class clazz1 = p1.getClass(); Class clazz2 = p2.getClass(); //System.out.println(clazz1==clazz2);//true System.out.println(clazz1.getName()); } }
toString():返回该对象的字符串表示.
包(package):
对类文件进行分类管理.
给类提供多层命名(名称)空间.
写在程序文件的第一行.
类名的全称得是 包名.类名.
包也是一种封装形式.
package mypack;
编译时:javac -d . Demo.java
会自动生成一个文件夹里面存放Demo.class
原因:类名写错.
因为DemoA类以及有包的所属,所以必须要明确其包名.
记住:DemoA这个名词错的.正确名称是包名.类名
packa.DemoA
以前都是在一个包里,所以不写
视频演示时直接把packa文件生成在c盘
错误原因是在当前目录下没找到,因为packa存在别的目录下
set classpath=c:\myclass
有了包以后,没有加public的类其实在包中被封装了.
public class DemoA
show()方法默认权限也不行,加上public
总结:包与包之间的类进行访问,被访问的包中的类必须是public的.
被访问的包中的类的方法也必须是public的.
protected -->保护,只有通过extends继承的才可以拿到该方法.
public protected default private
同一类中 ok ok ok ok
同一包中 ok ok ok
子类中 ok ok
不同包中 ok
package mypack; //import packa.DemoA;//导入了packa包中的DemoA类. //import packa.DemoAA; import packa.*;//导入了packa包中所有的类. //packa\DemoA.class //packa\abc\DemoAbc.class //import packa.abc.*; //导包的原则:用到哪个类,就导入哪个类. //import干嘛用的啊?为了简化类名书写. class Demo { public static void main(String[] args) { DemoA d = new DemoA(); d.show(); System.out.println("Hello package!"); } }