一,什么是面向对象(Object Oriented Programming)
1,是一种思维方式,由面向过程演化而来,从原来的执行者,变为指挥者,在面向对象的程序里。将数据和处理数据的方法紧密地联系在一起,形成类,再将类实例化,就形
了对象。在面向对象的世界里,不再需要考虑数据结构和功能函数,只要关注对象就可以了。
2,面向对象的三大特点
1)封装性:面向对象编程的核心思想之一就是将对象的属性和方法封装起来,是用户知道并使用对象提供的属性和方法即可,而不需要知道对象的具体实现。
原则是可以使对象意外的部分不能随意存取对象的内部数据,避免了外部错误对内部数据的影响,实现错误的局部化。
2)继承性:继承的实体是类,也就是说子类拥有父类的成员。
3)多态性:又是重要特征,它是指在父类中定义的属性和方法被子类继承后,可以具有不同的数据类型或表现出不同的行为。
3,类和对象
1)类:类是基本构成要素,是对象的模版,java程序中所有的对象都是由类创建的。(使用计算机语言来描述现实中的实物)
2)对象:在java语言中把一切失误都看成对象。
定义格式: 类名 变量名=new 类名;new关键字来实例化对象。
使用对象的格式:对象.成员变量,对象.成员方法()。
4,成员变量和局部变量
1)成员变量:是定义在类中的变量。
成员变量跟随对象的创建而储存在堆中。
成员变量储存在堆中生命在周期比较长。
作用范围在整个类中。
在堆中储存有默认值。
2)成员变量:是定义在方法,和语句中的变量。
局部变量跟方法一起储存在栈中。
局部变量储存在栈中生命周期比较短。
作用范围在方法和语句中有效。
在栈中储存必须手动赋值。
5,匿名对象
1)就是没有名字的对象,只能一次调用,没有具体的引用变量,在方法中可以将对象的地址进行传递。
6,private关键字
1)修饰符意思是私有的访问权限,修饰成员,不能修饰局部。
private是一种封装形式的体现形式,不是完全封装。被私有的成员变量(方法)只能在类中使用,类外不能使用,但是提供了方法,可以间接的访问到。
以后的成员变量(方法)要求私有修饰。
7,构造方法
1)定义:是一种特殊的方法,它的名字必须与它所在的类的名字完全相同,并且没有返回值,也不能写return,也不需要使用关键字void进行标识。
特点: 构造方法用于对对象中的所有成员变量进行初始化,在创建对象时立即被调用,经运行一次。
可以重载。写不写都有,不写的化会自定写,但是看不见。
8,this关键字
1)当局部变量和成员变量的名字相同时,成员变量就会被隐藏,这是如果想在成员方法中使用成员变量,则必须使用关键字this。
this也表示本类对象的引用,那个对象调用,就表示那个对象。
2)this的第二个用法:this()语句,可以在构造方法中进行调用,注意:this语句只能写在构造方法的第一句。
9,static 关键字(修饰符)
1)由来:如果一个值被所有对象共用,为了节约内存,提高效率,就用static修饰,来进行共享。
2)static只能修饰成员变量和成员方法,不能修饰局部变量和方法。
被static修饰的成员多了一种调用方法,类名调用。没有被修饰的成员,只能被对象调用。
3)静态成员变量和非静态成员变量的区别:
static修饰成员变量,类变量 --属于类。
非静态成员变量,实例变量,对象变量 --属于对象。
a)内存位置
静态,跟随类的加载而加载,随着类的消亡而消亡,方法区。
非静态,跟随对象在堆中,没有引用变量后,成垃圾。
b)生命周期
静态随着类的加载而加载,生命最长。
非静态成成员变量,随着对象加载,生命相对较短。
c)调用方式
静态,可以被类名,对象调用。
非静态,只能对象调用。
4)作用意义
静态是所有对象共享数据。
非静态是每个对象的特有数据。
5)使用注意事项
在静态方法中,不能直接调用非静态变量。
静态方法中,不能写this,super。
非静态方法中,能直接调用静态变量。
6) 静态该什么时候用
什么时候使用静态成员变量:
具体问题,具体分析,分析一个事物的时候,发现事物之间有共享数据,共享数据定义成静态。
什么时候使用静态成员方法:
如果一个方法,没有使用过,类中的非静态变量,方法定义成静态。
10,main方法
public static void main(String[] args){}
public 公共权限,被JVM调用
static 类名调用,不需要对象 java Demo
void 没有返回值,如果有返回到JVM,因此不需要返回值
main 规定好的名字,不能改
string[] 字符串数组
args 参数(唯一能改)
下面是个小程序:
<span style="font-size:14px;">/*
定义一个Student的类 实现set,get改变成员变量的值
*/class Student
{
private String name;//把成员私有化
private int age;
private int score;
Student(String name,int age,int score){
this.name=name;//给成员变量赋值
this.age=age;
this.score=score;
}
//通用set,get方法实现对成员变量赋值
public static void setName(String name){
this.name=name;
}
public static String getName(){
return name;
}
public static void setAge(int age){
this.age=age;
}
public static int getAge(){
return age;
}
public static void setScore(int score){
this.score=score;
}
public static int getScore(){
return score;
}
public static void speak(){
System.out.println(name+" "+age+" "+score);
}
}
class StudentTest
{
public static void main(String[] args)
{
Student s=new Student("张三",25,95);
s.setName("赵五");
System.out.println(s.getName());
//s.setAge(24);
s.setScore(110);
s.speak();
}
}</span>
加油,为黑马。