类的简单概念
类主要是用来对一个实体(对象)进行描述的,主要包括了实体具有的属性、实体具有的功能(可以做些什么)。
比如:手机
手机类主要包含的属性:生产厂商、品牌、生产日期、颜色、尺寸等等。
手机类主要包含的功能:打电话、电源开关、放音乐等等。
类的定义格式
class ClassName{
field;//成员属性
method;//成员方法
}
上述中class是定义类的关键字,Classname是定义的类名字,field是类包含的属性,method是类包含的方法(类的功能)。
public class Animal {
public Animal(String name) {
this.name = name;
}
public String name;
public String sax;
public Animal(String name,String sax){
this.name=name;
this.sax=sax;
System.out.println(1);
}
}
在上述代码Animal类中包含了该类的属性 name、sax,在这里并没有写它的方法。
上述代码中的public Animal(String name)和public Animal(String name,String sax)均为该类的构造方法,在一个类中如果不写构造方法那么在实例化时它会调用系统默认的构造方法,构造方法要求和类名一致并且无返回值。构造方法的主要作用是对类中的属性进行初始化。
在定义类时要注意不能public修饰的类名一致。
类的实例化
定义了一个类,就相当于在计算机中定义了一种新的类型,与int,double类似,只不过int和double是
java语言自带的内置类型,而类是用户自定义了一个新的类型,比如上述的:Cat类和Computer类。有
了这些自定义的类之后,就可以使用这些类来定义实例(或者称为对象)。
用类类型创建对象的过程称为类的实例化,在java中通过new关键字配合类名进行实例化。
public class Cat extends Animal {
public Cat(String name, String sax) {
super(name, sax);
System.out.println(2);
}
}
Cat cat=new Cat("zs","nan");
cat.jump();
System.out.println(cat.name);
如上便是创建一个实例的过程。
注意事项
new 关键字用于创建一个对象的实例.
使用 . 来访问对象中的属性和方法.
同一个类可以创建对个实例.
对类和对象做一个简单的说明
类只是一个类似于模型的东西,用来对一个实体进行描述,限定了类有哪些成员.
类是一种自定义类型,可以用来定义变量,但是在java中用类定义出来的变量我们成为对象.
一个类可以实例化出多个对象,实例化的出的对象占用实际的物理空间,存储类成员变量。
this 指针
当我们使用类的构造方法对类的成员变量进行初始化时经常想要使用相同的名字,但不知道是给哪一变量初始化,因此this的作用就体现出来了。
public class Animal {
public Animal(String name) {
this.name = name;
}
public String name;
public String sax;
public Animal(String name,String sax){
this.name=name;
this.sax=sax;
System.out.println(1);
}
}
在上述代码中我们可以看到使用了this指针而this指明的是当前类中的成员变量而不是构造方法中的String name和String sax。
this引用的特性:
- this引用的类型:对应类类型引用,即那个对象调用就是那个对象的引用类型
- this引用只能在"成员方法中使用"
- this引用具有final属性,在一个成员方法中,不能再去引用其他的对象
- this引用是成员方法第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this引用负责来接收
- 在成员函数中,所有成员变量的访问,都会被编译器修改成通过this来访问
字段和方法的四种访问权限
Java 中对于字段和方法共有四种访问权限:
private: 类内部能访问, 类外部不能访问
默认(也叫包访问权限): 类内部能访问, 同一个包中的类可以访问, 其他类不能访问.
protected: 类内部能访问, 子类和同一个包中的类可以访问, 其他类不能访问.
public : 类内部和类的调用者都能
范围 | private | default | protected | public | |
---|---|---|---|---|---|
1 | 同一包中的同一类 | √ | √ | √ | √ |
2 | 同一包中的不同类 | √ | √ | √ | |
3 | 不同包中的子类 | √ | √ | ||
4 | 不同包中的非子类 | √ |