面向对象
-
面向对象思想该数:当需求单一,或者简单时,我们一步步去操作没有问题,并且效率挺高。可是随着需求的更改,功能的增多, 发现需要面对 每一个步骤很麻烦,这时就开始思索,能不能把这些步骤和功能在进行封装,封装时根据功能不同,进行不同的封装,功能类似的封装在一起,这样结构都清晰了很多。用的时候找到对应的类就可以了。这就是面向对象的思想。
-
面向对象思想特点:
2.1 是一种更符合我们思想习惯的思想
2.2 可以将复杂的事情简单化
2.3 将我们从执行者变成指挥者
-
面向对象的特征:
封装
继承
多态
-
面向对象开发就是不断的创建对象,使用对象,指挥对象做事情。
-
类和对象的概念
a: 类 :是一组相关的属性和行为的集合
b: 对象:是该类事物的具体体现
-
定义类就是定义类的成员(成员变量和成员方法)
-
定义一个学生类
public class Student { String name="张三"; int age = 15; char sex='男'; public static void eat(){ System.out.println("吃饭"); } public static void playGame() { System.out.println("玩游戏"); } public static void study(){ System.out.println("学习"); } }
-
学生类的使用
8.1 文件名: 在一个Java文件中写两个类:一个基本类,一个测试类
8.2 创建对象使用
8.3 创建对象格式:类名 对象名 = new 类名();
8.4 如何使用成员变量呢 格式:对象名.变量名
8.5 如何使用成员方法 格式:对象名.方法名
public class Test { public static void main(String[] args) { Student student = new Student(); int age = student.age; String name = student.name; char sex = student.sex; System.out.println(name); System.out.println(age); System.out.println(sex); student.eat(); student.playGame(); student.study(); } }
-
成员变量和局部变量的区别
9.1 在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
9.2 在内存中的位置不同
成员变量:在堆内存
局部变量:在栈内存
9.3 生命周期不同
成员变量:随着对象的创建而创建,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
9.4 初始化值不同
成员变量:有初始化默认值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
注意:局部变量的名称可以和成员变量的名称一样,在方法中使用的时候,采用就近原则
-
参数传递
10.1 Java中的参数传递问题
基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变直接影响实际参数
10.2 方法的参数是类名
如果你看到了一个方法的形式参数是一个类 类型(引用类型),这里其实需要的是该类的对象
-
匿名对象
11.1 匿名对象就是没有名字的对象
11.2 匿名对象的应用场景
a:调用方法,仅仅只调用一次的时候
b:匿名对象可以作为实际参数传递
-
封装
12.1 封装概述:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
12.2 封装好处
a:隐藏实现细节,提供公共的访问方式
b:提高了代码的复用性
c: 提高了安全性
12.3 封装原则
a: 将不需要对外提供的内容都隐藏起来。
b:把属性隐藏,提供公共方法对其访问。
-
private关键字
a: 是一个权限修饰符
b: 可以修饰成员变量和成员方法
c:被其修饰的成员只能在本类中被访问
-
使用封装来完善学生类
public class Student { private String name="张三"; private int age = 15; private char sex='男'; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public static void eat(){ System.out.println("吃饭"); } public static void playGame() { System.out.println("玩游戏"); } public static void study(){ System.out.println("学习"); } }
-
测试学生类
public class Test { public static void main(String[] args) { Student student = new Student(); student.setAge(23); student.setName("李四"); student.setSex('男'); int age = student.getAge(); String name = student.getName(); char sex = student.getSex(); System.out.println(name); System.out.println(age); System.out.println(sex); student.eat(); student.playGame(); student.study(); } }