2020-01-08day8面向对象
1.面向过程(C)和面向对象(C++、Java、GO、python)
把大象装进冰箱
1.把冰箱门打开
2.把大象装进冰箱
3.把冰箱门关上
面向过程----过程----动作
1.打开(冰箱门)
2.装进(冰箱, 大象)
3.关闭(冰箱门)
面向对象----对象----实体
1.冰箱.开门();
2.冰箱.装进(大象);
3.冰箱.关门();
2.类和对象
类....是定义
对象....真正存在的个体
3.类的成员
属性----成员变量
方法----成员方法----动作
4.如何定义一个类
[修饰符] class 类名 {
属性
方法
}
属性:
[修饰符] 数据类型 属性名 = 初始值;
[修饰符] 数据类型 属性名;
修饰符
|---private:私有的
方法: 和上一章方法定义相同,不要加public static
5.如何创建对象
new 类名()
6.访问对象的成员
对象名.属性
对象名.方法
7.封装性---隐藏该隐藏的,暴露该暴露的
1).属性设置成private的
2).为private属性提供set和get方法,
8.电话本管理系统-----无法持久化(数组,集合ArrayList)-----如何持久化?文件--->数据库MySQL...
需求:电话本信息进行添加、删除、修改、查询的操作
数据如何存储: 一维数组 数据类型[] 数组名;
|----数据类型和电话本每一条信息的数据类型一致----->自定义类型----->设计类TelephoneItem
|----TelephoneItem[] items = new TelephoneItem[100];
9.toString()方法
System.out.println(对象名)
System.out.println(对象名.toString()) 继承
10.对象的内存分析
栈------
|-----基本数据类型变量
|-----引用(指针)
堆-----
|-----对象
|-----数组
11.构造方法----在创建对象的时候使用 new Car()
1)特点
|---方法名和类名相同
|---构造方法定义时没有返回值类型
2)如果一个类中没有定义构造方法,那么这个类中有一个空参的默认的构造方法;
3)在类中可以定义带参数的构造方法;
4)如果在类中定义了带参数的构造方法,那么类中默认的无参的构造方法就会被覆盖,如果希望使用默认的无参的构造方法,那么需要在类中显式定义;
5)类中定义的多个构造方法以重载的方式存在;
12.this
1)表示当前对象;
2)表示当前类的构造方法(默认的无参的构造方法,带参数的构造方法) this()
13.static----静态的 静态的方法 静态的成员变量
1)可以修饰属性和方法;
2)被static修饰的属性被所有的对象共享;
3)被static修饰的成员优先于对象存在,随着类的加载而存在,和该类的对象是否创建没有任何关系;
4)如何访问被static修饰的成员
|----对象.成员;
|----类.成员;
5)static修饰的属性和方法属于类,不属于对象,static修饰的变量被改,那么所有的对象都能观察到这种修改。
14.继承----extends-----扩展----父类不能满足要求,对其进行增强----子类
1)子类继承了父类,就继承了父类的方法和属性;
2)子类除了具有父类的属性和方法,还拥有自己的属性和方法;
3)super----父类
|----表示父类对象
|----表示父类的构造方法(默认的无参的构造方法,带参数的构造方法) super()
4)Java中只支持单继承,一个类只能有一个直接父类, 可以有多个间接父类;
5)写继承不只是为了复用性。而是要有关系才去做继承。
15.重写----方法之间的关系
1)发生在父类和子类当中;
2)返回值类型、方法名、参数列表相同。
16.final----关键字----最终的
1)修饰类,被修饰的类无法被继承
2)修饰方法,被修饰的方法不能被重写
3)修饰变量,被修饰的变量不能被修改----常量
17.设计模式---单例设计模式
1)一个类的对象的实例只有一个
2)懒汉式和饿汉式
|---懒汉式---非线程安全的
|---饿汉式---线程安全的
18.多态----事物的多种状态
1)重载和重写
2)子类对象的多态性---->子类对象赋值给父类引用---->父类引用指向子类对象----->向上转型
Sutdent s = new Student()
Person p = new Student();
3)向下转型
instanceof
19.抽象类----抽象方法 抽象----不具体
1)需要有这个方法,但是不知道这个方法如何去具体实现,那么这样的方法就可以设置成为抽象方法;
2)抽象方法使用abstract进行修饰,没有方法体,以";"结尾;
3)如果一个类中有抽象方法,那么这个类一定是抽象类; 加abstract;
4)抽象类只能被继承(extends),不能通过抽象类创建对象;
5)如果一个类继承了抽象类,那么这个类要实现抽象类中所有的抽象方法;
6)如果子类没有实现抽象类中所有的抽象方法,那么子类也要被定义成抽象方法。
20.接口----USB接口----规范
1)如果一个抽象类中所有的方法都是抽象方法,那么这个类就可以被定义成接口;
2)接口---interface;
3)接口中所有的抽象方法默认使用public abstract修饰,但是public abstract可以不写;
4)接口只能被类实现(implements);
5)一个类可以实现多个接口。
交通工具
21.包-----文件夹
1)对代码分类;
2)声明包----package;
3)使用包----import;
4)常用包
java.lang
java.awt---java.swing
java.util---工具 集合 日期 时间
java.io
java.net---网络 C/S OSI TCP/IP 四层/五层
java.sql---数据库 JDBC
System String Math C# Qt(C++)
豆瓣读书
C程序设计语言 丹尼斯.里奇 hello world
C和指针
C专家编程
C陷阱与缺陷