2010年3月4-6日Java较多

这几天网络有问题,所以今天一起总结出来

类的小结

1,类抽象了所有具有一定共性的实体的共同特称。一个类中,变量用来表示属性,方法用来表示功能,类把数据和对数据的操作封装成一个整体。程序语言中,通过类创建对象。

2,构造函数的作用在于声明类的对象后,为其分配储存单元,即创建实例。

3,不同对象的实例变量将被分配不同的内存空间,所有对象的类变量都分配给相同的一块内存空间。

4,对象是引用型变量。对象调用变量及方法会受到权限的限制,Java通过修饰符public private protected等来说明使用权限,在权限范围内,对象过通过调用方法可以产生一定行为。

5,实例方法只能由对象调用,实例方法既能对类变量操作也能对实例变量操作,类方法既可由对象调用,又可直接由类名调用,而类方法只能对类变量进行操作。

6,包是Java语句中有效管理类的机制。如果类在同一个包中,那么相应对象能访问自己的有好成员,如果类不在同一个包中,那么相应对象只能访问public和protected成员。

 

在程序中,类主要有两个任务;

1,类定义了与其有关的抽象物,我们可以使用类描述真是世界的实体,无论他们有多复杂。

2,类是程序模块化的基础。

在系统构造中尽可能运用人类的自然思维方式,这种设计方法符合我们的思维习惯。

 

类的机制把某些数据成员和方法对外封装起来,以免被不正当的存、取。

 

面向对象技术中,对象的状态用 变量 表示,对象的行为用 方法 表示。

使用一个对象前,必须声明并 new 它。

成员变量在 类 中有效,局部变量只在 方法 中有效。

 

1,构造方法的用途和特点:

创建内存空间,特点,方法名和类名相同,无返回值,void

 

2.举例说明类方法和实例方法,以及类变量和实例变量的区别。

实例方法可以访问实例变量和类变量,类方法只能访问类变量,类变量可以直接被类名调用,实例变量必须由对象调用。同一个类中,类变量公用一块内存。

 

///

g.setFont(new Font("宋体"Font.BOLD,36));

///

 

类的继承性与多态性

class 子类名 extends 父类名

{

 

}

由继承而得到的类,叫做子类或者派生类,被继承的类叫做父类或者超类。

1,Object是包 java.lang中的类

2,类java.long.Object 处于Java开发环境的类的层次的根部,其它所有类,都直接或者间接的继承了它。

3,toString()是Object类中的常用方法,用来返回对象的字符串表示。

 

继承实现了软件的重用。

在子类中,只要声明这个类是从已知的父类继承过来的,这样就可以使用父类的非私有的方法和变量。

Java不支持多重继承,但是支持多重接口,用来实现多重继承的功能。

 

子类的继承性

如果子类和父类在同一个包(文件夹)中,那么子类继承父类除了私有private以外的所有变量和方法,如果子类和父类不在同一个包(文件夹)中,那么子类只能继承父类public和protected的变量和方法。

父类的构造函数不能被继承,它只属于定义它的类。

 

关键字super的使用

super的三种用法:

1,调用父类构造函数

super(参数);

2,调用父类中被重写的方法

super.Method(参数);

3,访问父类被隐藏的成员变量

super.variable;

案例 调用父类构造函数

public class Father

{

        public Father(int x)

        {

                //代码部分

        }

        //代码部分

}

子类

public class Tom extends Father

{

        public Tom()

        {

                super(20);

                /*调用父类构造方法,当创建一个子类对象时,子类构造函数首先,调用并执行父类的构造函数,(显式的或者隐式的),可以创建和初始化类(继承)的父类成员。super必须用在第一句。
                */

        }

}

 

1,Java系统会默认每个类都具有this、super和null三个域,所以任意类中都可以不加说明地直接引用它们,this和super两个域则与继承紧密相连。

2,类方法中不能使用this或super。

3,null代表“空”,是指一个说明都没有的“空”域。在定义一个对象但尚未为其开辟内存空间时,可以指定这个对象为null。

 

类成员的覆盖

若子类的成员变量和父类中的成员变量同名,则我们就说子类覆盖父类的成员变量。访问子类中的同名成员变量时,父类的被隐藏

 

若子类中定义一个方法,并且方法,名字、返回类型、参数的个数、参数的类型 

和父类的某个方法完全相同,这个父类的方法被隐藏。我们就说我们重写了父类的方法或者叫做覆盖。

 

运行时的多态性,对于重写或者继承的方法。Java运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法。

 

重点:重写父类的方法时,不可以降低方法的访问权限,也就是说,如果父类的权限是public那么子类方法也应该是public 不可以比public权限低

例如

class Father

{

        public  void   one(){}

        protect  void two(){}

        void three(){}

        private void  four(){}     

}

class Sun extends Father

{

        public void one(){}//可以,没有降低访问级别

        protect void one(){}//不可以,降低了访问级别

        public void two(){}  //可以,提升了访问级别

        void protect two(){}//不可以,降低了访问级别

        //应为four是私有的,所以访问不到four

}

 

改写后的方法不能比重写的方法产生更多的例外。(这句话我没弄明白,什么叫更多的例外呢?希望有高手指点)。

 

参数类型的区分度一定要足够,例如不能是同一简单类型的参数,如int与long。
一个类的多个构造函数之间还可以相互调用,这可以通过关键字this来实现。需要注意的是,这个调用语名必须是整个构造函数的第一个可执行语句。

 

类的多态:

所谓多态,就是一个对象有多种形态,简单的说,同一个名字的方法,因为参数不同,实现不同的功能。

比如说 自定义一个比大小的方法

……

{

        public String sort(int x,int y)

        {

                if(x>y)

                        return x+" "+y;

                else

                        return y+" "+x;

        }

        public String sort(int x,int y,int z)

        {

                int swap;

                if(x<y)

                        {swap=x;x=y;y=swap;}

                if(x<z)

                        {swap=x;x=z;z=swap;}

                if(y<z)

                        {swap=y;y=z;z=swap;}

                return x+" "+y+" "+z;

        }

}

这是一段多态的实例,同样是方法名sort()输入2个数字和输入3个数字执行的却是不同的方法。在实际应用中非常的方便。

 

构造函数的重载

class OverLoadDemo

{

        OverLoadDemo()

        {

                OverLoadDemo();

                OverLoadDemo(String str);

                OverLoadDemo(String str1,String str2);

        }

}

public class A

{

        public static void main(String[] args)

        {

                OverLoadDemo strdemo1 = new OverLoadDemo();

                OverLoadDemo strdemo2 = new OverLoadDemo("Java");

                OverLoadDemo strdemo3 = new OverLoadDemo("Java","Program");

        }

}

 

多态的构造方法,可以提供多种初始化对象的能力,使程序员可以根据自己需要来初始化对象。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值