面向对象是已对象为基础,完成各种操作主要强调对象。
面相对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情
(1)类是对象的模板,主要描述对象具有的属性,功能。
(2)类的特点:类是对象的类型,是具有相同属性和方法的一组对象的集合。
(3)属性:对象具有的特征(每个对象的属性都有自己的值)
(4)方法:对象能够执行的操作(功能)
(5)类和对象的关系:类是对象的抽象模板;对象是一个具体的实体
class +classname{
属性(特征)
方法(功能)
}
class是定义类的关键字,classname是类名,{}中是类的主体。
类中包含的内容叫做类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量。方法主要说明类具有哪些功能,称为类的成员方法。
public class Student{ String name; int height;//属性 public void dohomework(){ }//方法 }
构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。
public class Student{ String name; int height; public Student(String name,int height){ this.name=name; this.height=height; } // 构造方法: // 名字与类名相同,没有返回值类型,设置为void也不行 // 一般情况下使用public修饰 // 在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次 public Student(){ this.name="小明"; this.height=180; } //构造方法可以重载(用户根据自己的需求提供不同参数的构造方法) //上述两个构造方法:名字相同,参数列表不同,因此构成了方法重载。 // 如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的。 }
注意:
构造方法只负责对对象中的成员初始化,并不负责给他们开辟空间
定义了一个类就如同在计算机中定义了一个新的类型,就如同int,long,double等类型一样(只不过他们是java内部自带的)。当我们定义类之后如何去使用呢?
就如同定义变量一样,我们可以定义对象(new对象)。
public class student{ String name; int height; }
public class UserStudent { public static void main(String[] args) { Student s=new Student(); s.name="张三"; s.height=180; Student b=new Student(); b.name="李四"; b.height=165; } }
这里通过new关键字和类名,我们实例化了两个对象分别是s,b
new +类名(要调用的构造方法的参数列表)
Student s=new Student()
我们可以通过.对这两个对象的属性进行访问
注意:
new 关键字用于创建一个对象的实例.
使用 . 来访问对象中的属性和方法.
同一个类可以创建多个实例.
java编译器给每个“成员方法“增加了一个隐藏的引用类型参数,该引用参数指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
public class Student{ private String name; private int height; public Student(String name,int height){ this.name=name; this.height=height; } public void printStudent(){ System.out.println(this.name+this.height); } }
1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
2. this只能在"成员方法"中使用
3. 在"成员方法"中,this只能引用当前对象,不能再引用其他对象,具有final属性
4. this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责来接收