面向对象
学习面向对象三条主线
- 类和类的成员的研究
- 三大特性 : 封装Encapsulation, 继承Inheritance, 多态Polymorphism
- 其他关键字 : this, package, import
完成需求时
- 先去找具有所需功能的对象来用。
- 如果该对象不存在,那么创建一个具有所需功能的对象。
- 这样简化开发并提高复用。
面向对象程序设计的重点是类的设计
类
对现实世界事物的描述, 是抽象的, 是概念上的.
用成员变量来描述事物的特征
用成员方法来描述事物的行为
对象
类的实体, 也称实例.
- 类的本质也是一种新的数据类型, 也称为复合数据类型, Teacher类类型, 和int, char一样.
class Teacher1 { // 成员(member)变量来描述事物的特征 String name; // 对象属性或实例变量 int age;// 对象属性或实例变量 String gender;// 对象属性或实例变量 // 成员(member)方法来描述事物的行为 // 对象方法或实例方法 public void lesson() { //对象方法 System.out.println(name + "老师在上课");// 成员互访 } public String eat(String some) { //对象方法 System.out.println(name + "老师在吃" + some);// 成员互访 return "真好吃"; } // 自我介绍, 返回一个字符串, 内容是我的所有属性值的拼接, 加上一些提醒会更清晰 public String say() { //对象方法 String str = "姓名 : " + name + ", 年龄 : " + age + ", 性别 : " + gender; // 成员互访 return str; } }
public class TeacherTest { public static void main(String[] args) { // 类也备好了, 我们可以创建对象了. Teacher t = new Teacher(); //依据类模板创建对象, 使用关键字new ; t.name = "李明"; // 给对象的姓名赋值 t.age = 30; t.gender = "男"; // 对象成员, 必须通过对象.成员的方法来访问 System.out.println(t.name); // 打印对象的姓名 System.out.println(t.age); System.out.println(t.gender); // 对象方法 t.lesson(); t.eat("包子"); // 方法调用 : 方法名(实参) String s = t.say(); System.out.println(s); } }
每日一考
- 什么是类, 什么是对象, 什么是实例?
类 : 对现实世界事物的描述, 抽象定义
对象 : 类的实体, 也称为实例.
实例 : 就是对象, 对象就是实例, 是一回事. .,./
- 类中有哪些成员? 各有什么作用? 成员意味着什么?
属性, 方法.
属性描述事物的特征, 通常都是名词.
方法描述事物的行为, 动作. 通常都是动词.
成员意味着同属一个类, 成员可以直接互访.
- Teacher t = new Teacher(); 这个语句中的t究竟是什么?
t是一个Teacher类型的引用类型的变量, t变量内存空间中保存的是地址(右面对象在堆内存中的地址—某个字节的编号), t指向对象实体. 通过t操作数据, 就相当于操作对象.
- Teacher t1 = new Teacher();
Teacher t3 = t1;
Teacher t2 = new Teacher();
t1 = t2;
t2 = t3
以上代码中创建了几个对象? B, 因为有两个new操作
A. 1个 B.2个 C.3个 D.4个
- 什么是垃圾对象? 垃圾对象会被立刻清理吗? 如何清理垃圾?
Teacher t1 = new Teacher();
t1 = null;
不再有引用指向的对象, 称为垃圾对象. GC内部测试对象是否可达, 如果不可达, 就是垃圾对象, GC会清理它, GC什么时候清理取决于GC内部.
如何清理? 把垃圾对象占用的所有内存空间标识为可用状态.
栈 : 正在运行中的方法
堆 : 类数据, 和对象数据, 常量池.
来源:https://www.cnblogs.com/earnest-jie/p/12586715.html