java-面向对象

* 1.面向对象的编程关注于类的设计
* 2.设计类实际上就是设计类的成员

* 3.类的常见成员:属性(成员变量或Field)  & 方法(Method)& 构造器

属性:定义该类或该类的实例所包含的数据

方法:定义该类或该类的实例的行为特征或功能实现。

构造器:创建对象。系统为类提供了一个默认的构造器。

            一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。

            构造器不能定义返回值类型说明,也不能使用void定义构造器没有返回值。一旦使用了,编译不会报错,但Java会把这个所谓的构造器当成方法来处理。

public : 被定义的属性和方法所在的类及其子类,同一个包中的类,不同包中的类都可以访问。

private:被定义的属性和方法只能在自己定义的类中被访问,在其他类中不能被访问。

protected : 被定义的属性和方法只能在自己的子类和类中被访问。

    private 私有成员,在类的内部才可以访问。

    protected 保护成员,在该类的内部和继承类中可以访问。

默认修饰符:如果没有指定访问控制修饰符,则表示 使用默认修饰符,这时变量和方法只能在自己的类及该类同一个包下的类中访问。

static:被修饰的变量为静态变量,被修饰的方法为静态方法。

final:被修饰的变量在程序整个执行过程中最多赋一次值,所以它经常被定义为常量。

transient:只能修饰非静态的变量。

volatile:和transient一样,只能修饰变量。

abstract:被修饰的成员称作抽象方法。

synchronized:该修饰符只能应用于方法,不能修饰类和变量。

方法详解:

       所属性:

       1、方法不能独立定义,方法只能在类体中定义;

       2、从逻辑意义上看,方法要么属于该类本身,要么属于该类的一个对象;

       3、永远不能独立执行方法,执行方法必须使用类或对象作为调用者;

       方法定义在类体内,若使用static修饰,方法属于这个类;否则这个方法属于这个类的对象。

      同一个类中的一个方法调用另一个方法时,如果被调方法是普通方法,则默认使用this作为调用者,如果被调方法是静态方法,则默认是这个类作为调用者。

     传递方法参数: 

     传递Java方法参数的方式只有一种:值传递方式--将实际参数值的副本(复制品)传入方法中,而参数本身不会受到任何影响。

    长度可变的方法;

    JDK1.5之后,可以定义形参长度可变的参数,从而允许为方法指定数量不确定的形参。如果在在定义方法时,在最后一个形参 的类型后增加3点“...”,则表明该形参可以接受多个参数值,多个参数值被当成数组传入。

    public static void test(int a,String... books)

    构造方法:构造方法的命名必须与类名一致,无论是否定义构造方法,所有的类都会自动定义构造方法,若用户定义了构造方法,则以用户定义为标准,若没有定义则调用默认构造方法。

    递归方法:

    方法的递归--一个方法在其方法体内调用它自身。

   规定:递归一定要向已知方向递归。

   this用法:

   Java中的this关键字总是指向调用的对象。

  1、在构造器中引用该构造器执行初始化的对象。

  2、在方法中引用调用该方法的对象。

  使用类和对象:

  通过new来创建对象,使用对象就是引用对象的方法和变量--通过“.”。

  访问静态变量和静态方法--通过类名+运算“.”。

  抽象类和抽象方法:

  使用规则:

  1、抽象类和抽象方法必须使用abstract修饰符来修饰,方法不能有方法体;

  2、抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例;

  3、抽象类中必须包含一个抽象方法,没有抽象方法也不能创建实例;

  4、抽象类可以包含属性、方法、构造器、初始化块、内部类、枚举类六种成分。抽象类的构造器不能用于创建实例,主要用于被其子类调用;

  5、含有抽象方法的类(包括直接定义了一个抽象方法;继承了一个抽象父类,但没有完全实现父类包含的抽象方法;以及实现了一个接口,但没有完全实现接口包含的抽象方法3种情况)只能被定义成抽象类。

 抽象方法和空方法体的方法不同:抽象方法没有方法体,也没有花括号;空方法体的方法已经定义了方法,只是方法体为空。

  抽象类只能当成父类来被继承,抽象类体现了一种模板模式的设计,作为多个子类的通用模板,子类在其基础上进行扩展、改造。

  使用模板模式的两条规则:

         1、抽象父类可以只定义需要使用的某些方法,其余则留给其子类实现。

         2、父类中可能包含需要调用的其他系列方法的方法,这些被调方法既可以由父类实现,也可以由其子类实现。在父类中提供的方法只是定义了一个通用算法,其实现也许并不完全由自身实现,而必须依赖于其子类的辅助。

定义软件包:

      package 包名;

      package 包名1[.包名2[.包名3]];

      定义软件包的过程实际上就是新建了一个文件夹。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值