JAVA 面向对象

 在java中最简单的类定义为

class Test{
    属性1;
    属性2;
    构造方法1;
    构造方法2;
    方法1;
    方法2;
}

构造器

public class You {
    String name;

    public You(String name) {
        this.name = name;
    }

    public void nihao(){
        System.out.println("你好"+name);
    }
}
  • 构造器与类同名
  • 每个类有一个以上的构造器
  • 构造器可以有0个,1个或者多个参数
  • 构造器没有返回值
  • 构造器会伴随着new操作符一起使用

请注意不要在构造器中定义与实例域重名的局部变量

this关键字

在非构造方法中都会有一个隐式参数,是这个类的实例, 在每一个方法中关键字this表示隐式参数, 如果方法中有一个变量没有被声明, 他会去实例域寻找, 但是如果像上面的构造方法一样参数名与实例域的字段同名,可以通过this来寻找.

常用的封装

public class You {
    String name;
    String sex;
    public You(String name) {
        this.name = name;
    }

    public You(String name,String sex) {
        this.name = name;
        this.sex = sex;
    }

    public String getName() {
        return  this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return  this.sex;
    }
}

  getXXX通常被称为访问器方法, 因为他们只返回实例域值, 因此又称为与访问器.

只有getXXX的属性也叫只读域, 一旦在构造器中设置完毕, 就没有任何一个方法可以对他进行修改

一个类的对象可以访问所属类的所有对象的私有数据

public  boolean equals(You other){
    return this.name.equals(other.name);
}

final常量实例属性

将实例属性定义为final. 构建对象时必须初始化这个属性, 也就是说必须在确保每一个构造器执行后,这个属性被设置, 并且在后面的操作中, 不能够再对他进行修改

final修饰符大多用于基本类型的字段或者不可变类型的字段(如果类中的每个方法都不会改变其对象,这种类就是不可变类)

对于可变的类使用final会造成混乱, final只是说明该变量的指向不会变, 但是如果他指向一个数组的话,其内部元素还是可以变的.

私有方法

使用private替换public即可将一个公共的方法替换为私有的, 私有方法不允许外部的其他类调用.

静态属性与静态方法

如果一个类中的属性声明为static, 那么这个类中的所有实例都会共享这个实例, 即使没有实例存在,这个属性也存在,它属于类而不属于任何独立的对象.

静态变量用的比较少, 但是静态常量使用的比较多, 比如Math类中定义了一个常量.

public final class Math {
    public static final double PI = 3.14159265358979323846;
}

  在程序中可以采用Math.PI的形式获得这个常量, 

静态方法

 静态方法是一种不能向对象实施操作的方法, 比如Math类下的一些方法, 他们不需要实例化Math类就可以调用, 可以认为这是没有this参数的方法, 静态方法不能够访问除静态属性外的其他属性, 因为他没有实例.在下面两种情况下使用静态方法

  • 一个方法不需要访问对象状态, 其所需要的参数都是通过显示参数提供
  • 二是只需要访问类的静态域

静态方法还有另外一种常见的用途: 工厂方法, 通过静态方法来生成对象

为什么不用构造器来完成这些操作呢, 主要由两个原因:

  • 一是因为构造器的名字必须与类相同.
  • 当使用构造器是, 无法改变构造对象的类型

方法参数

java的参数是按值调用的, 也就是说方法得到的是所有参数值的一个拷贝, 方法修改不了传递给他的任何参数变量的内容(或者说是指向吧), 但是方法参数有两种类型

  • 基本数据类型
  • 对象引用

一个方法修改不了一个基本数据类型的参数, 但可以修改一个对象的属性

posted @ 2019-01-01 20:26  瓜田月夜  阅读(105)  评论(0)    收藏  举报