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!");
    }
}

 

posted on 2016-12-11 21:31  夜行锦衣  阅读(98)  评论(0编辑  收藏  举报

导航