目录
1.3.1 StringBuilder和String相互转换
一. 类和对象
1.1 类的介绍
类是Java程序的基本组成单位,是对显示生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为.
类的组成: 属性和行为
1. 属性: 在类中通过成员变量来体现(类中方法外的变量)
2. 行为: 在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
1.2 类的定义
类的定义步骤:
1.定义类
2.编写类的成员变量
3.编写类的成员方法
public class 类名{
// 成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;
...
// 成员方法
方法1;
方法2;
...
}
1.3 对象的使用
1.创建对象
- 格式: 类名 对象名 = new 类名();
- 范例: Phone p = new Phone();
2. 使用对象
2.1 使用成员变量
- 格式: 对象名.变量名
- 范例: p.brand
2.2 使用成员方法
- 格式: 对象名.方法名()
- 范例: p.call()
1.4 关键字private
- 是一个权限的修饰符
- 可以修饰成员(成员变量和成员方法)
- 作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问
针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作
- 提供"get变量名()"方法,用于获取成员变量的值,方法用public修饰
- 提供"set变量名(参数)"方法.用于设置成员变量的值,方法用public修饰
1.5 关键字this
public calss Student {
private String name;
public void setName(String name){
// 只有在这里加this.前缀 才可以修改上面声明的变量name
this.name = name
}
}
二.封装
1. 封装概述
是面向对象三大特征之一(封装,继承,多态)
是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
2. 封装的原则
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问成员变量private,提供对应的getXxx()/setXxx(参数...)方法
3. 封装的好处
通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性
1.1 构造方法的概述
构造方法是一种特殊的方法
作用: 创建对象
//格式
public calss 类名{
修饰符 类名(参数){
}
}
// 功能: 主要是完成对象数据的初始化
1.2 构造方法的注意事项
- 构造方法的创建
- 如果没有定义构造方法,系统将给出默认的无参构造方法
- 如果定义了构造方法,系统将不再提供默认的构造方法
2.构造方法的重载
- 如果自定义了带参构造方法,还要使用无参构造方法,就必须再写一个无参构造方法
3.推荐的使用方式
- 无论是否使用,都手写无参构造方法
1.3 StringBuilder概述
作用: 如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,即耗时,也浪费内存空间,而这种操作还不可避免,那么有没有一种较好的方式可以解决这个问题呢? 答案是肯定有的,我们可以通过Java提供的StringBuilder类来解决这个问题
1.3.1 StringBuilder和String相互转换
- StringBuilder转换为String
public String toString(): 通过toString()就可以实现
2. String转换为StringBuilder
public StringBuilder(String s)
1.4 集合概述
集合类的特点: 提供一种存储空间可变的存储模型,村粗的数据容量可以发生变化
集合类有很多,目前先介绍ArrayList
ArrayList<E>
- 可调整大小的数组实现
- <E>:是一种特殊的数据类型,泛型
举两个例子
public boolean add(E e)
将指定的元素追加到此集合的末尾
public void add(int index, E element)
在此集合中的指定位置插入指定的元素
三.继承
3.1 继承的概述
- 格式: public class 子类名 extends 父类名{ }
- 范例: public class Zi extends Fu { }
- Fu: 是父类,也被称为基类,超类
- Zi: 是子类,也被称为派生类
继承中子类的特点:
- 子类可以有父类的内容
- 子类还可以有自己特有的内容
3.2 继承的好处和弊端
继承的好处
- 提高了代码的复用性(多个类相同成员可以放在同一个类中)
- 提高了代码的维护性(如果方法的代码需要修改,修改一处即可)
继承弊端
- 继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时,子类实现不得不跟着变化,削弱了子类的独特性
什么时候使用继承?
存在包含关系的时候使用继承 假设A包含B 就用B继承A 但是如果是并列关系 就不建议使用继承
3.3 继承用会使用的关键字super
super关键字的用法和this关键字是用法相似的
- this: 代表本类对象的引用
- super: 代表父类存储空间的标识(可以理解为父类的对象引用)
使用方法如下
- this: 变量 this.成员变量 构造方法 this(...) 成员方法 this.成员方法(...)
- super: 变量 super.成员变量 构造方法 super(...) 成员方法 super.成员方法(...)
3.4 继承用会使用的方法重写
方法重写的概述
- 子类中出现了和父类中一模一样的方法声明
方法重写的应用
- 当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类的方法,这样,即沿袭了父类的功能,又定义了子类有的内容
方法重写注意事项
- 私有方法不能被重写(父类私有成员子类是不能继承的)
- 子类方法访问权限不能更低(public > 默认 > 私有)
3.3 继承用会使用的关键字final
final关键字是最终的意思,可以修饰成员方法,成员变量,类
final修饰的特点
- 修饰方法: 表明该方法是最终方法,不能被重写
- 修饰变量:表明该变量是常量,不能被再次赋值
- 修饰类:表明该类是最终类,不能被继承
3.4关键字static
static关键字是静态的意思,可以修饰成员方法,成员变量
static修饰的特点
- 被类的所有对象共享 这也是我们判断是否使用静态关键字的条件
- 可以通过类名调用 当然,也可以通过对象名调用 推荐使用类名调用
四.多态
1.1 多态的概述
同一个对象, 在不同时刻表现出来的不同形态
举例子: 柯基(狗)
我们可以说狗是狗: 狗 dog = new 狗();
我们也可以说狗是动物: 动物 animal = new 狗();
这里狗在不同的时刻百年西安出来了不同的时刻,这就是多态
多态的前提和体现
- 有继承/实现关系
- 有方法重写
- 有父类引用指向子类对象
1.2 多态中成员访问特点
- 成员变量: 编译看左边,执行看左边
- 成员方法: 编译看左边,执行看右边
为什么成员变量和成员方法的访问不一样呢?
- 因为成员方法有重写,而成员变量没有
1.3 多态中成员访问特点
- 多态的好处: 提高了程序的扩展性
具体体现: 定义方法的时候,使用父类作为参数,将来在使用的时候,使用具体的子类型参与操作
- 多态的弊端: 不能使用子类的特有功能