类与对象(初始化、访问权限控制)
一.概论
1.编程语言发展阶段:
客观事物—自然语言—面向对象的语言—非OO的高级语言—汇编语言—机器语言
2.面向对象的语言
封装性:类的抽象
继承性:子类可以继承父类的属性和功能
多态性:同一操作的多个不同状态
3.类和对象关系
二.类class
·类组成JAVA程序的基本要素
·类封装了一类对象的状态和方法
·类是用来定义对象的模板
1.类的实现:类声明+类体
2.类声明
英文名首字母大写
类名定义应见名知意
3.类体(2 parts)
A.变量的声明(类的属性)
B.方法的定义(类的功能)
4.格式:
Class 类名
{
类体
}
三.成员变量和局部变量
·成员变量——类体中声明的变量
·局部变量——方法中定义的变量
1.变量的类型:成员变量和局部变量的类型可以是java中的任意类型。
2.变量的有效范围
A、成员变量在整个类内都有效
B、局部变量只在声明它的方法内有效
C、方法参数在整个方法内有效
D、方法内的局部变量从声明它的位置之后开始有效
3.实例变量与类变量
·成员变量:实例成员变量(实例变量)+类变量(静态变量/static变量)
·在声明成员变量时,用关键字static给予修饰的称作类变量,否则成为实例变量
4.成员变量的隐藏
·如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。要解决该问题,可使用关键字this。
四.方法
1.方法的定义(2parts):方法声明+方法体。
2.方法声明:方法名+方法的返回类型
3.方法体:{}内的,局部变量的声明+java语句
五.方法重载(Overload)
1.方法重载:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参加参数的个数不同,或者是参数的类型不同。
2.功能多态性:向功能传递不同的消息,以便让对象根据相应的消息来产生相应行为。
3.方法中参数的使用(两个例子没有看明白,get back)
·在方法的声明格式中,需要指明返回值的类型。当一个方法不需要返回值的时候,其类型说明为void,否则方法体中必须包含return语句。返回值既可以是基本数据类型,也可以是复杂数据类型。
·JAVA中取消了指针,不能直接像C一样操作内存,但由于对象的动态联编性,复杂数据类型做参数相当于指针的使用,即参数传递,而基本数据类型作参数传递则相当于值传递。
六.构造方法
·构造方法是一种特殊的方法,它与类名是同名,且没有类型可以重载。
·构造方法用来初始化新创造的对象。类可以包含一个or多个构造方法,不同的构造方法根据参数的不同来决定要初始化的新对象的状态。
·所有java类都有构造方法,它用来对新的对象进行初始化。
·构造方法是特殊的类方法,不能用static修饰。
七.类方法和实例方法
八.Notice
·对成员变量的操作只能放在方法中,方法可以对成员变量和方法体重自己定义的局部变量进行操作。
·实例方法技能对类变量操作也能对实例变量操作,而类方法只能对类变量进行操作。
·一个类中的方法可以相互调用,实例方法可以调用该类中的其他方法;类中的类方法只能调用该类的方法,不能调用实例方法。
九.对象
·类是创建对象的模板
·当使用一个类创建了一个对象时。也就是说给出了这个类的一个实例
十.创建对象
1.创建对象:对象的声明+为对象分配内存
2.对象的声明:类名 对象名表(People 张三,李四;)
3.为对象分配内存:使用new关键字为对象分配存储空间,使该对象成为类的实例。 对象名 = new构造方法()(张三 = new People();)
4.Notice
·如果类中没有定义构造方法,则系统会调用默认的构造方法(无参数)。
·如果类中定义了一个或多个构造方法,那么java不提供默认的构造方法。
5.对象的内容模型(get know)
6.创建多个不同对象
·使用new运算符可以传建多个不同对象
·不同对象被分配道不同空间
·改变一个对象状态不会影响其他对象状态
十一.使用对象
1.对象操作自己的变量(对象的属性)Li.weight = 60kg;
2.对象调用类中的方法(对象的功能)Li.speak(“who am i?”)
3.体现封装
十二.对象的引用和实体
·java对象在堆中分配内存
·对象的引用在栈中分配内存