面向对象
概念
面向对象的提出是针对面向过程,在解决一个实际问题的时候,需要明确步骤,每一步做哪些确定的动作,这是面向过程,而面向对象是对于面向过程提出的一个抽象的描述,例如(解决吃饭这个问题:1.面向过程——对于吃饭需要先做饭(买菜,洗菜,烧饭)这些步骤都需要实现,2.面向对象——只需要告诉自己吃饭,而其他操作不需要自己实现,交由专门负责的人实现即可)
面向过程是最基本的解决思路
面向对象是基于面向过程
类
类的提出是依据面向对象的提出而产生的,类是用来描述一种事物(这种事物所有的个体都具有相似的地方)类与方法的提出有些相似
方法:为了解决代码的冗余(同一步骤需要多于一次的执行)而提出的,是一些语句的整合。
类:为了解决相似的个体但不是同一个个体而提出的,例如(可以有person类,这个类可以描述人,但不是一个具体的人,是所有人抽象化提出的一个概念)是事物的属性和行为的整合。
对象
提出了便产生了对象,对象是一个类的具体描述,一个具体的东西,例如(一个person类,这是描述人的一个类,但它并没有具体化,这时候使用对象将其具体化,一个叫做小明的人)
class demo1{
public static void main(String[] args){
Person p=new Person();
System.out.println(p.name);
System.out.println(p.age);
p.eat();
}
}
class Person{
String name;//成员变量(实例变量 对象的特有属性)
int age;
String sex;
void eat(){
System.out.println("吃饭");
}
void sing(){
System.out.println("唱歌");
}
}
在上述程序中,定义了一个Person类,这个类中有一些属于所有人的属性,以及一些行为,而在主函数中创建了对象p,这个对象就是这个类的一个具体化实现。对于属性也可称作变量,而变量有局部变量及成员变量:
成员变量与局部变量的区别:
存储位置:
成员变量:存储在对象(堆内存)
局部变量:存储在栈内存中(函数所属空间)
生命周期:
成员变量:随着对象而存在或消亡
局部变量:随着函数的进出栈而存在或消亡
初始化:
成员变量:有默认初始化,可通过对象直接调用
局部变量:必须在初始化且赋值后才可调用
适用场合:
成员变量:在有对象的地方均可调用
局部变量:只能在函数中调用
class demo5{
public static void main(String[] args){
Person p=new Person();
p.show();
}
}
class Person{
int age=10;
public void show(){
int age=20;
System.out.println(age);
}
}
即在这个例子中,访问到的是局部变量,而访问不到成员变量,这是由于就近原则导致,如果在这时候要访问成员变量,可以使用关键字this。例如:
class demo5{
public static void main(String[] args){
Person p=new Person();
p.show();
}
}
class Person{
int age=10;
public void show(){
int age=20;
System.out.println(this.age);
}
}
由此可以看出访问到的数据是成员变量,这就是this关键字的一个作用。在后边会整理this的用法及作用。