12.get函数
当我们私有化成员变量之后,此时只能通过set函数进行set函数赋值,但是此时无法获取对应的成员变量的值
我们对象是用来存取数据,它能存还需要能取,现在变成了只能存不能取,所以我们需要添加一个get函数 用来解决这个问题
13.数据模型类
在Java中我们需要使用对象存取数据
public class 见名知意的类名{
private 数据类型 储存内容语义化名字;
private int id ;}构造函数 无参数 有参数
set 和 get 函数
tostring()函数 格式化输出函数
14.继承
1.两个类建立继承关系 使用 extends 关键字
2.继承关系建立后 就是可以通过子类调用父类的成员变量和函数
3Java中的继承关系
类 和 类 之间是继承关系 并且是单继承
类 和 接口 之间的关系是实现关系 并且是多实现
接口 和接口 之间的关系是继承关系 并且是多继承
4.Java中如果不写extends 并不是代表没有父类 而是默认继承与 object (基类/超类)
5.调用的顺序是当前类有的则调用当前类的 如果当前类没有则调用父类的
父类有的函数 子类在写一遍 称之为函数的重写 override
父类的函数满足不了子类的需求 所以子类会对父类函数进行重写
6.在继承关系中 允许 父类的引用 接受子类的对象 并且以子类的形式运作
15.多态:
多种状态
一个父类的引用可以赋值成多个子类对象,并且一旦完成赋值 那么将以子类的形式运作
多态语法:父类型 名字 = new 子类构造函数()
16.抽象
语法:
1.abstract 添加到类上面代表当前类为抽象类
2.抽象类不能通过new 创建对象
3.抽象类有 构造函数 成员变量 普通函数 可以继承 也可以被其他类继承
思考:不能new对象 为什么还有构造函数?
因为抽象类让其它类继承 子类的构造函数第一句 super()代表调用父类的构造函数
4.abstract 添加到函数上面代表当前的函数为抽象函数
public abstract void eat()
5.抽象函数必须在抽象类中 抽象类不一定有抽象函数
【抽象类和普通类没什么区别,只是抽象类不能new对象 和 可以添加抽象函数】
6.抽象函数不写也不能写method body方法体
7.抽象函数必须由子类重写 或者 子类也是抽象的
8.抽象函数不能和 static private final 等关键字连用
17.接口
接口类型 类和接口之间 是一种实现关系,并且是多实现
面向对象语言特征: 继承 多态 封装
Java的是一门面向对象语言,Java的面对对象的特征是:继承 多态 封装 抽象 接口
17.1 接口的语言特征
1.接口的声明 使用关键字 interface
public interface 类名 {}
2.接口中的函数都是抽象的 public abstract 修饰的
3.接口中的变量都是 静态常量 使用 publicstatic final 修饰的
4. 接口和接口之间的关系是 继承关系 并且是多继承
5.接口中的 默认实现,函数式接口 是1.8新特性
6.接口和类之间的关系是 实现关系 并且是多实现
public class Cat implements 类名,类名 {}
7.接口不能new 不能创建对象 也没有构造函数
多态的语法:
继承多态 父类类型 名字 = new 子类构造函数()
people p1 = new man()
接口多态 接口类型 名字 = new 实现类构造函数()
HaHa h = new Dog();
18.普通类 抽象类 接口 的区别
抽象类和普通类相比 可以写抽象函数 但是不能new对象
接口和抽象类相比,只有抽象函数和静态常量屁【1.8新增,默认实现】19.final关键字
1.final 单词意思 就是 最终的
类:修饰类代表当前类为,最终类 这个类不能被其他类继承
函数:修饰函数代表 最终函数 这个函数不能被子类重写
!有时候整个类的全部内容 都不希望被重写 整个类可以使用final修饰 如果至少某个函数 则给函数添加final修饰
字段: 修饰的内容代表 最终字段/常量 这个字段只能被赋值一次
面试题:final修饰的字段只能被赋值一次 是哪一次
非静态字段:在初始化的时候或者构造函数
静态字段:在初始化的时候 或者 静态代码块
final修饰的字段名规范为全大写下划线 例如 MAZ_AGE