什么是面向对象?
当我们遇到问题的时候,不去考虑如何解决问题,而是先找到问题域中的对象,通过创建对象去解决问题。
什么是对象?
对象就是程序中的一个具体的实例,这个实例可以代表现实社会中的具体事物。
什么是类?
类就是一个具体事物的抽象(概念)。
那么类和对象的关系是什么呢?
类是对象的抽象(概念);
对象是类的具体实例;
先有的类再有的对象。
创建一个类的语法结构:
public class Student{
}
构建(创建)一个对象的语法结构:
数据类型 变量名 = new 数据类型();
类 类型 变量名 = new 类 类型();
例如: Dog dog = new Dog();
类的组成成分:
1、成员变量(一般声明变量是不会赋初始值,除非特殊要求)
2、方法(包括构造方法、普通方法)
按返回值类型和参数可以将方法分为四种:
- 无返回值 无参数的
public void 方法名(){
方法体…
} - 无返回值 有参数的
public void 方法名(参数列表){
方法体…
} - 有返回值 无参数的
public 返回值类型 方法名(){
方法体…
return 内容;
} - 有返回值 有参数的
public 返回值类型 方法名(参数列表){
方法体…
return 内容;
}
方法的重载: (是一种现象)
在同一个 类中 , 方法名相同 ,参数列表 不同, 与返回值无关 , 我们管这种现象 叫做方法的重载。
方法重载有三个不同,分别是参数个数不同、参数类型不同、参数顺序不同。与形式参数的变量名无关。
方法重载的作用:
拓展 类 自身的 功能的;
构造方法:
语法结构:
访问修饰符 类名(参数列表){
方法体
}
构造器的作用:
1.用来规范对象的创建;
2.给成员属性赋值;
当我们创建一个类的时候,jvm虚拟机会给我们提供一个 默认无参数的构造器,就是让我们创建对象用的,如果我们自己定义了,那么 系统默认提供的就没了, 需要我们自己添加一个 无参数的构造器;
一般时候我们定义含参构造器的同时也要定义一个无参构造器。
构造器(构造方法)也是方法中的一种,只是构造器是一种特殊的方法,它是没有返回值类型的方法。
属性访问器:
给类的成员属性赋值取值 ( setter ,getter)。
语法结构:
赋值
public void setName(String name){ //name为形式参数
this.name = a;
}
取值
public String getName(){
return name;
}
Java给类的成员属性赋值的三种方式分别为:
1.= 赋值
2.构造器赋值
3.属性的访问器赋值
学习的属性的访问器的作用是:
可以把成员属性的私有化,通过属性的访问器访问,能保护类中的成员属性,更安全,封装性更好。
访问修饰符:
private 私有化的 只能被当前类所使用
protected 受保护的
(default) 友好的 friendly
public 公共的谁都可以访问
this关键字:
创建类的时候,类的内部就会隐含一个成员变量 ,就是this, 这个 this的类型 就是该类的类型 ,his也是一个引用,指向自身对象。
Student s = new Student();
s.age
this.age
他们两个所体现出来的效果是一样的,单输出this就是一个地址值。
方法的相互调用:
1.构造方法
构造器在相互调用的时候 ,使用this(参数列表),而且 this(); 只可以作为首行代码 出现。而且不允许被循环调用。
2.普通方法
普通方法在相互调用的时候,使用this.方法名(参数列表); ,也可以直接使用 方法名();调用
方法之间不可以循环调用,否则就会出现Exception in thread “main” java.lang.StackOverflowError (栈溢出错误)的情况。因为无限循环了 ,所以会出现(内存) 栈溢出问题。