一 、学习面向对象内容的三条主线
- java类及类的成员
- 面向对象的三大特征
- 其他关键字
二、学习内容
- 面向对象与面向过程
- JAVA语言的基本元素:类和对象
- 类的成员之一:属性
- 类的成员之二:方法
- 对象的创建和使用
- 面向对象特征之一:封装和隐藏
- 类的成员之三:构造器(构造方法)
- 几个关键字:super、this、package、import
三、面向对象与面向过程
1、面向对象(OOP)与面向过程(POP)
- 二者都是一种思想。
面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象。 - 面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等
2、面向对象的三大特征
- 封装
- 继承
- 多态
四、类
- 属性:对应类中的成员变量
- 行为:对应类中的成员方法
1、类的语法格式
//修饰符 class 类名{
// 属性声明;
// 方法声明;
//}
public class Person{
//属性,成员变量,类的成员变量可以先声明,不用初始化,类成员变量有默认值
String name;//姓名,String的默认值是null
int age;//年龄,int的默认值是0
//行为,方法,也叫函数
//打印姓名
public void showName(){//方法的名称如果是多个单词,首个单词的首字母小写,其他的单词首字母大写
System.out.println("姓名" + name);
}
//获得年龄
public int getAge(){//如果是一个有返回值的方法,那么方法体的最后一行一定是返回相应的数据,使用return关键字,返回的数据类型与方法定义的一致
return age;
}
}
2、创建java自定义类
步骤:
- 定义类(考虑修饰符、类名)
- 编写类的属性(考虑修饰符、属性类型、属性名、初始化值)
- 编写类的方法 (考虑修饰符、返回值类型、方法名、形参等)
3、对象的创建和使用
java类的实例化,即创造类的对象
- 使用new+构造器创建一个新的对象
- 使用“对象名.对象成员”的方式访问对象成员(包括属性和方法)
public static Test{
public static void main(String[] args){
//实例化Person类,也就是创建Person对象
Person person = new Person();//声明一个Person类型的变量,变量名person。new Person()就是实例化Person类兵器给person赋值
person.name = "张三";//给person对象的name属性赋值
person.showName();//对象的方法的调用
}
}
4、类的成员之一:属性
- 语法格式:修饰符 类型 属性名 = 初值;
- 说明:
- 修饰符private:该属性只能由该类的方法访问
- 修饰符public:该属性可以被该类以外的方法访问
- 类型:任何基本类型,如int、boolean或任何类
- 说明:
- 举例
public class Person1{
public String name = "zhangsan";
private int age;//private私有的,可以在本类的方法使用,不能做类的外部使用
public void showAge(){
System.out.println(age);
}
}
5、补充:变量的分类(成员变量与局部变量)
- 在方法体外、类体内声明的变量称为成员变量
- 在方法体内部声明的变量称为局部变量
- 实例变量就是在类实例化成对象之后才能使用的
- 类变量不需要实例化成对象就可以使用。可以直接通过类名.属性这样的方式调用。
public static String sex = "男";
6、成员变量(属性)和局部变量的区别
- 成员变量
- 成员变量定义在类中,在整个类中都可以被访问
- 成员变量分为类成员变量和实例成员变量,实例变量存在于对象所在的堆内存中。
- 成员变量有默认初始化值
- 成员变量的权限修饰符可以根据需要,选择任意一个
- 局部变量
- 局部变量只定义在局部范围内,如:方法内,代码块内
- 局部变量存在于栈内存中
- 作用的范围结束,变量空间会自动释放
- 局部变量没有默认初始化值,每次必须显示初始化
- 局部变量声明时不指定权限修饰符
7、类的成员之二:方法
- List item
语法格式:
修饰符 返回值类型 方法名(参数列表){
方法体语句;
}
- 修饰符:public,private,protected等
- 返回值类型:return语句传递返回值。没有返回值用void
- 方法只有被调用才会被执行
- 方法调用的过程分析:
- 方法的调用
- 注意
- 没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写
- 定义方法时,方法的结果应该返回给调用者,交由调用者处理
- 方法中只能调用方法,不能在方法内部定义方法。同一个类中,所有的方法可以直接互相调用,不用去new实例化对象
- 注意
8、练习
编写教师类和学生类,并通过测试类创建对象进行测试
//学生类
public class Students{
public String name;
public int age;
public String course;
public String interst;
//显示学生的个人信息
public void showInfo(){
System.out.println("姓名" + name);
System.out.println("年龄" + age);
System.out.println("课程" + cource);
System.out.println("兴趣" + interest);
}
}
测试:
Student stu = new Student();
stu.name = "小明";
stu.age = 12;
stu.course = "语文,数学,英语,化学";
stu.interests = "打球,街舞,唱歌";
stu.showInfo();
五、方法
1、对象的产生
当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量类型都是引用类型。
成员变量类型 | 初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0F |
double | 0.0D |
char | ‘\u0000’(表示为空) |
boolean | false |
引用类型 | null |
2、匿名对象
- 也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象
- 如:
new Student().showInfo();
- 如:
- 使用情况:
- 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象
- 经常将匿名对象作为实参传递给一个方法调用
3、类的访问机制
- 在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。
- 例外:static方法访问非static,编译不通过
- 在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员
4、面向对象思想:
- 设计类的成员:属性、方法
- 类的实例化,即创建类的对象(Person p = new Person())
- 通过“对象.属性”、“对象.方法”执行