面向对象(上):
1, 什么是面向对象, 什么是面向过程 ?
面向过程:凡事都亲力亲为;(创建一个类,在类里编写程序,实现功能,视为过程) 用程序编写如何实现一事件的过程; 由哪到哪 得写出如何走 理解为:我该怎么做。
面向对象:一些事不用自己去做,也能完成; 由哪到哪 只写出走就行 理解为:我该找谁做
面向过程的缺点:1.数据缺少对数据的封装,比较零散;每次用到相同 数据的时候,都需要重写,代码不能复用,可操作性差;
2, 类, 对象, 成员变量(属性,静态属性), 成员方法(方法, 动态属性), 局部变量分别的含义 ?
3, 面向对象的特点有什么 ?
封装 继承 多态
4, 如何在程序中创建一个对象 ?(首先要定义一个类)
类体
成员变量的作用范围(整个类)
类和类之间的关系
关联关系(不好下一个定义描述关联关系, 比较弱的关系)
*继承关系(extends关键字)
什么是一种什么
聚合关系
聚集
球队->队长
组合
一个类的组成部分是必不可少的
*实现关系
5, 成员变量在类中是如何初始化的 ?
初始值
byte 0
short 0
int 0
long 0L
float 0.0F
double 0.0D
boolean false
char '/u0000'
引用类型 null
(所有的类, 所有的接口, 所有的数组)
6, 如何更好的设计一个类 ?
合适的方法出现在合适的类里面
7, 什么是类的封装 ?
private关键字修饰的成员变量, 只能在当前类中使用
8, 什么叫构造方法 ? 构造方法的重载 ? // 方法名相同, 参数列表不同
构造方法:
就是用来构造一个对象的方法
1, 构造方法没有返回值, 没有返回值也不能写void
2, 构造方法名与类名一模一样
3, 定义一个类的时候, 如果没有写任意的一个构造方法, 则默认生成一个空参的构造方法
4, 当一个类中有定义的带参数的构造方法的时候, 则空参的构造方法会消失
练习: 封装一个Student类
姓名 String
年龄 int
语文分数 double
数学分数 double
方法: 显示姓名, 年龄, 总分, 平均分
// 分别以set方法和构造方法赋值
package wei; public class Duix { public Duix() {}; public Duix(String _name,int _age,int _yuWen,int _shuXue){ name = _name; age = _age; yuWen = _yuWen; shuXue = _shuXue; } private String name; private int age; private int yuWen; private int shuXue; public int getYuWen() { return yuWen; } public void setYuWen(int _yuWen) { yuWen = _yuWen; } public int getShuXue() { return shuXue; } public void setShuXue(int _shuXue) { shuXue = _shuXue; } public String getName() { return name; } public void setName(String _name) { name = _name; } public int getAge() { return age; } public void setAge(int _age) { age = _age; } public void jS() { System.out.print(name + " " + age + " " + (yuWen + shuXue) + " " + (yuWen + shuXue) / 2); } }
public class Text { public static void main(String[] args) { /*Duix xx = new Duix(); xx.setName("刘德华"); xx.setShuXue(80); xx.setAge(8); xx.setYuWen(70); System.out.print("姓名" + " " +"年龄"+ " " +"总成绩"+ " " +"平均分"); System.out.println();*/ //xx.jS(); Duix xx = new Duix("刘德华",8,80,70); xx.setName("刘德华2"); xx.jS(); } }
9, this关键字代表的含义是 ? 该如何使用
当前对象的引用;
可以用来解决传入的参数和成员变量重名的情况
还可以用来调用当前类中的其他的构造方法
10, static关键字代表的含义是 ? 该如何使用 ?
静态的 用于修饰变量 ,方法
(static修饰的变量不存在于堆和栈的空间中,存在于数据区;
不管实例化多少对象,所有的对象都共享一份;
不能实例化,直接用类名点出来)
修饰 类
(做一些工具类的 使用)
11, 单例模式介绍
只能实例化多少对象 ,,,只有一个变量
有饿汉式和懒汉式两种
把构造方法改成私有的,在当前类实例化,然后用static修饰,在外面获取的对象就共享一个Driver属性了
12, 文档注释的使用
可以用来描述类,方法,变量
格式
/*(内容)
*(内容)
*(内容)
*(内容)
*/