目录
面向对象的编程:
面向过程:提出问题----分解问题----一一解决问题;一个一个小的函数的调用(小的行为和动作,注重过程)
面向对象:(分门别类的思想)
对象的定义:
为类的实例化,具体的案例(代码中先有类再根据类创建对象)可以通过类的构造方法来创建对象(使用new关键字创建对象)
类型 对象名称 = new 构造函数();
一切客观存在的食物都是对象,即:“万物皆对象” 任何对象一定具有自己的特征和行为(即:属性和方法) 特征: 称为属性,代表对象有什么 行为: 称为方法,代表对象能做什么
操作【属性 方法】:对象.属性【方法】;
类(Class)的定义:
是面向对象程序设计实现信息封装的基础
类名:大驼峰命名规则
Java中如果定义类的时候,没有给属性赋值,则会有默认的值;
基本数据类型的默认值:
-
整型0;
-
浮点型0.0;
-
char:‘ ’;
-
boolean:false;
-
String:null;
重写tostring方法:该方法在打印对象的时候,会自动打印内容;例如以下代码:
@Override
public String toString() {
return "Cat [nameString=" + nameString + ", sexString=" + sexString + ", age=" + age + ", colerString="
+ colerString + ", person=" + person + "]";
}
类的构造方法:
访问修饰符 (不需要返回值类型) 函数名与类名称保持一致
Java类中如果没有自己定义构造函数,系统会自动生成无参的构造函数,方便用户使用。当我们定义构造函数后,系统将不再自动生成无参构造,若要使用则必须自己写无参构造方法;
构造函数的作用:初始化属性!!
public Cat() {
super();
}
public Cat(String nameString, String sexString, int age, String colerString, Person person) {
super();
this.nameString = nameString;
this.sexString = sexString;
this.age = age;
this.colerString = colerString;
this.person = person;
}
this关键字:
在Java中,存在this关键字,一旦对象被创建,默认指向当前对象;this指的是当前对象!!!
1、this是一个关键字,意为这个。
2、this是一个引用,this是一个变量,this变量中保存了内存地址指向了自身,this存储在JVM堆内存中Java对象的内部。
3、创建100Java对象,每一个对象都有this,也就是说有100个不同的this。
4、this可以出现在“实例方法”当中,(this指向)代表当前正在执行这个动作的对象。(this代表当前的对象“张三”)。
类的成员:
-
属性
-
方法
-
构造方法
-
静态属性
-
静态方法
-
构造代码块
-
静态代码块
static 关键字:可以修饰属性,方法,类(内部类),代码块,静态导包。
static修饰的代码会提前加载到内存中,只有一份,属于类!静态方法中无法之间调用非静态函数或者属性。被static修饰的属性和方法不属于对象,属于该类,直接使用类名称.属性/类名称.方法;(广泛的被使用在工具类中)
static { // 构造代码块 } // 静态代码块
提前加载到内存,并且只加载一次!!!
类的成员加载顺序:属性最先运行,之后为构造函数!static修饰的属性和静态代码块最先运行(这两者看代码运行顺序),之后才开始运行对象属性和构造代码块(这两者看代码运行顺序)
Java中的访问权限修饰符:
-
public 任何地方都可以正常访问(该修饰符修饰的属性,方法)
-
protected 同包,同类和子类可访问
-
缺省(默认) 同包,同类可访问
-
private 只能是当前类
注:类(class)只可以使用:public 和默认修饰!!!
局部变量与成员变量的区别:
定义的位置不同
成员变量定义在类中
局部变量定义在方法中或者语句里面
在内存中的位置不同
成员变量存储在堆内存的对象中
局部变量存储在栈内存的方法中
声明周期不同
成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失
局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失
初始化不同
成员变量因为在堆内存中,所有默认的初始化值
局部变量没有默认的初始化值,必须手动的给其赋值才可以使用