面向对象编程初步(OOP:Object Oriented Programming)
对象:我们叫做Object, instance(实例)。
面向对象的三大特征:封装、继承、多态。
对象:
是具体的事物,能看的到,摸得着。
对象是类的实例。
用来描述客观事物的一个实体,由一组属性和方法构成。
对象具有各种特征-属性
方法-对象执行的操作
类:
类是对象抽象。(抽象,抽出象的一部分)
具有相同属性和方法的一组对象的集合
类是对象的类型
定义类的时候,属性和方法不是必须的
属性定义格式:
[修饰符] 属性类型 属性名 = [默认值]
类的方法定义
格式:
[修饰符] 方法返回值类型 方法名(形参列表 ) {
// n条语句
}
public class ClassName{
//成员变量(属性)
public String name;
public int age;
//成员方法
public void fun (/*形参列表*/){
/*方法体*/
}
}
JAVA中方法参数传递是:值传递!
对象的使用步骤:
1.先导包
import 包名.类名
2.实例化对象
类名 对象名=new 类名()
3.通过对象名调用类成员属性以及方法
对象名.属性名 或 对象名.方法名
创建对象
类名 对象名 = new 类名();
Person person = new Person();
引用对象成员:使用“.”进行以下操作:
引用类的属性:对象名.属性
引用类的方法:对象名.方法名()
成员变量
- 在类内、方法体外声明的变量
- 有默认值,默认值时各种形态的0或者空
局部变量
- 在方法体声明的对象
- 没有默认值,在没有对其进行初始化之前不能使用,否则报错
java 的内存:
- 栈内存(stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中
- 局部变量:方法的参数,或者方法{ }内部变量
- 作用域:一旦超出作用域,立刻从栈内存中消失
- 存放:局部变量 – 先进后出,自下而上存储 – 方法执行完毕,自动释放空间
- 堆内存(heap):凡是new出来的东西,都在堆当中。
- 堆内存里面的东西都有一个地址值:16进制
- 堆内存里面的数据,都有一个默认值。规则如上
- 需要垃圾回收器来回收:System.gc()
- 方法区(method area): 存放:类的信息(代码)、 static变量、字符串常量等.
构造方法constructor
构造方法名:无返回值类型,与类名相同,初始化代码 可以指定参数
访问修饰符 构造方法名 ( ) {
}
public Penguin() {
}
有返回值类型的不是构造方法。
构造方法重载
overload重载:一个类中允许多个同名方法,但是要求方法的参数列表不同
三个方面不同:
1.参数个数不同
2.参数类型不同
3.参数顺序不同
pub1ic class Usei {
int id;
string name;
String pwd;//密码
pub1ic UserO{
}
public User(int id,string name){
this.id =id;
this.name=name;
}
public User(int id string name,string pwd) {
this.id =id;
this.name =name;
this.pwd=pwd;
}
public static void main(string[] args){
User ul=newUser();
User u2=new User(101,"fei");
User u3=newUser(102,"fei""123456");
}
}
构造器
构造器定义: constructor 构造方法
一个在创建对象时被自动调用的特殊方法。
构造器作用:为对象进行初始化(成员变量)工作
为
对象进行初始化(成员变量)工作
构造器是一种特殊的方法:
– 构造器的方法名必须和类名一致!
– 构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能在构 造器里调用return。
– 通过new关键字调用!!
– 如果我们没有定义构造器,则系统会自动定义一个无参的构造方法。如果已定义则 编译器不会添加无参数构造方法!
– 不普通方法一样,构造方法也可以重载
形参和实参:
– 定义方法的参数是形式参数
– 调用方法的参数是实在参数
– 调用方法时要求参数个数相同,类型兼容
参数传递:
– 基本数据类型的参数传递
▪ 无法通过方法调用改变变量的值
– 引用数据类型的参数传递
▪ 可以通过方法调用改变变量的值