类与对象
1. 类
类:一个类型,把有相似特征或者行为的一些事物认为是一个类别,有助于认知世界;是一个抽象概念,是人为了能够更好的理解,抽象出来的概念,并不存在!!!
一个类可以包含以下类型变量:
- 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
- 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
- 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。
1.1 类的定义
使用关键字class
访问修饰[public|private|protected|默认] class 类名称 {
}
一般将java代码,写在一个Xxx.java文件,这个文件就是一个类,如果这个文件中存在多个类,注意:public只能修饰Xxx类(就是和文件名称相同的类,其他的类都不能使用public关键字修饰)如果要在该文件中写main函数,只能也写在这个类。
2. 对象
类中一个真正的事物!!!!是存在的一个真实案例(实例),有状态和行为。
注:java就是一门面向对象的编程
2.1 对象的创建
对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:
- 声明:声明一个对象,包括对象名称和对象类型。
- 实例化:使用关键字 new 来创建一个对象。
- 初始化:使用 new创建对象时,会调用构造方法初始化对象。
类型 对象名称 = new 类型名称() [构造方法]
2.2 对象的属性赋值
对象名称.属性名称 = 值;
2.3 访问实例变量和方法
对象名称.方法名称([参数列表]);//访问方法
对象名称.属性名称 //访问属性的值
例子:
public class animal {
String name = "love";
int leg = 4;
String color = "pink";
protected void sleep() {
System.out.println("is sleeping!!!");
}
}
public class cat extends animal{
public static void main(String[] args) {
cat ani = new cat();
System.out.print(ani.color +" ");
System.out.print(ani.name +" ");
ani.sleep();
}
}
运行结果:
pink love is sleeping!!!
3.构造函数
构造函数是用来初始化新创建的对象的代码块。构造函数类似于java中的实例方法(Instance Method),但它不是一个方法(Method),因为它没有返回类型。简而言之,构造函数和方法是不同的。人们经常把Java中的构造函数称为特殊类型的方法。
注意:
1.构造函数的名称必须与与类名相同。
2.构造函数名与类名必须一致,并且没有返回类型。
3.每个类可以有一个以上的构造函数
构造函数的类型:默认构造函数、无参数构造函数和参数化构造函数。
- 默认构造函数:如果在类(class)中没有定义代码来实现任何构造函数,Java编译器将会在编译的字节码里面为你插入默认构造函数。不会在源代码(java文件)中找到它,因为默认构造函数是在编译期间由编译器插入到代码中,并且存在于.class文件中,所以你在源代码(java文件)里面是看不到这个默认构造函数的。
class 类名{
类名(){
}
}
- 无参数构造函数:不带参数的构造函数称为无参数构造函数,其形式看上去与默认构造函数相同,但是无参数构造函数里面可以有任何代码,而默认构造函数里面则是空的。
class 类名{
类名(){
system.out.println("hello word");
}
}
- 参数化构造函数:带参数的构造函数称为参数化构造函数。
class 类名{
public 类名(String n,int m) {
name=n;
age=m;
}
}
构造函数也是函数的一种,同样具备函数的重载(Overloding)特性。
class Person
{
public String name;
public int age;
Person()
{
System.out.println("1:name="+name+", age="+age);
}
Person(int a)
{
System.out.println("2:name="+name+", age="+age);
}
Person(String n)
{
name = n;
System.out.println("3:name="+name+", age="+age);
}
Person(String n,int a)
{
name=n;
age=a;
System.out.println("4:name="+name+", age="+age);
}
}
public static void main(String[] args) {
Person person = new Person("吉普赛");
Person person1 = new Person();
Person person3 = new Person("吉普赛",29);
Person person2 = new Person(10);
}
输出结果
3:name=吉普赛, age=0
1:name=null, age=0
4:name=吉普赛, age=29
2:name=null, age=0
4. this关键字
- 在java中,this的关键字,this关键字是一个指针
- 在类中,this默认指向当前类
- 如果构造对象,当对象构造完成后,会有一个this指向当前对象
5. static关键字
static:静态的
- 可以修饰java的类、属性、方法。
- static如果修饰类,只能修饰内部类,也可以修饰属性,如果使用static修饰属性,该属性就是静态属性属于类。也可以修饰方法。静态方法,属于类。
- static也可以直接单独使用,被static单独使用的语法块,静态块。(静态块:静态块会最先被类加载,而且只加载一次!!!)
- static也可以修饰import(import static 包.*)
- static修饰的东西,提前加载内存中