1、oop的三条主线
1-1、a、java类及类的成员
b、面向对象的三大特征
c、其他关键字
1-2、类和类之间的关系: 关联关系,继承关系,聚合关系(聚集、组合)
2、设计类和实例化类
类中只能存在属性和方法,不能出现其他语句
/**
* 1、设计类的成员(成员变量和成员方法)
* 2、实例化类
* 3、通过"对象.属性" 和 "对象.方法" 操作对象
*/
public class TestPerson {
public static void main(String[] args) {
//实例化类
Person person = new Person();
person.setName("zhangsan");
System.out.println(person.getName());
}
}
//设计类
class Person{
String name="lisi";
int age;
boolean sex;
public void eat(){
System.out.println("人能吃饭");
}
public void sleep(){
System.out.println("人能睡觉");
}
public void run(){
System.out.println("人能跑步");
}
public void setName(String n){
name=n;
}
public String getName(){
return name;
}
}
3、类的内存解析
栈:对象的引用和局部变量都存在栈中堆:对象的实例化信息存在堆中
4、类的属性(成员变量)详解
成员变量 vs 局部变量相同点:
a、 遵循变量申明格式:数据类型 变量名 = 初始化值
b、 都有作用域
不同点:
a、 申明的位置不同:
成员变量:申明在类里,方法外
局部变量:申明在方法内,方法形参,代码块内
b、 修饰符
成员变量修饰符有4个:public private protected 缺省
局部变量没有修饰符,与所在方法修饰符相同
c、 初始化值: 一定会有初始化值
成员变量在申明时,若没有显式赋值,那么不同类型的初始化值是不同的
byte short int long -》0
flaot double -》0.0
char -》 空格
boolean -》false
引用类型 -》null
局部变量一定要显式赋值(没有默认初始化值)
d、 在存储空间中的位置:
成员变量在堆空间中
局部变量在栈空间中
5、类的方法
a、 实例: public void eat(){}格式: 权限修饰符 返回值类型(void代表没有返回值) 方法名 (形参){...}
注意: void 和return 不能同时存在同一方法中
b、 方法可以调用本类的其他属性或方法(例外:static方法访问非static,编译不通过),方法中不能再定义方法;
6、类的重载
重载的条件:a/同一类中,b方法名必须相同,c、方法的参数列表不同(参数的个数不同或参数的类型不同)
方法的重载与方法的返回值类型无关。