回顾:
a.构造方法
b.方法的重载
c.this关键字
d.static关键字
----------------------------------
1.方法执行:
静态块: 类加载时执行,该方法只执行一次;
动态块在创建对象的时候初始化,该方法只要创建一个对象执行一次
构造方法: 在创建对象的时候初始化,该方法只要创建一个对应的对象是执行一次;
静态方法: 类和对象都可以调用,调用的时候执行一次;
动态方法: 对象可以调用,调用的时候执行一次;
eg:对象的id依次递增
2.封装:
(***)对象的三大特征之一 (抽象)、封装、继承、多态
a.why:属性的权限为public表示公共的,任何类都可以直接进行操作,安全性不高?
-封装
b.what:将类的某些信息隐藏在类内部,不允许外部程序直接访问,
而是通过该类提供的方法来实现对隐藏信息的操作和访问
(将属性私有化,并提供公共的访问方法)
c.语法:
private 属性
public void set属性(参数列表){} //设值方法
public 返回值 get属性(){} //获取方法
d.好处:
隐藏类的实现细节,只能通过规定的方法去获取数据,安全性高
方法控制流程加入和修改实现
3.继承:
(***)在java中类为单继承
a.why:多个类有重复相同的属性和方法,代码冗余,如何解决?
--继承:
b.what:子类继承类的所有属性和方法,并提供自己的特定属性和方法
c.语法:
父类 : class 父类{ 封装 }
子类 : class 子类 extends 父类{ 封装}
d.使用:
1).子类对象创建方式:
方式一: Student student=new Student();
方式二: Person student2=new Student(); //父类引用指向子类对象
2).子类可以调用子类的,也可以调用父类
4.super: 同this使用效果
- super.属性:子类调用父类的属性,注意权限问题,哪些权限可以?
- super.方法():子类调用父类的公共方法;
- super()/super(属性):子类调用父类的构造方法;
(***)super()只能放在第一句
5.权限修饰符:
| 同类 | 同包 | 子类 | 其他 | |
|---|---|---|---|---|
| private私有的 | √ | |||
| 默认(不写) | √ | √ | ||
| protected受保护的 | √ | √ | √ | |
| public公共的 | √ | √ | √ | √ |
6.方法重写:
a.why:在某些场合,需要子类将父类的同名方法去进行补充扩展?
b.what:子类将父类的同名方法重写编写的过程;
c.注意事项:
方法名相同
参数列表相同
返回值类型相同或者是其子类
访问权限不能严于父类
(***)构造方法不能被继承,所以不能被重写
d.how:
实际生活中,如果两个对象的属性值完全一样,则表示两个对象指定的是一个对象
-java代码中equals表示比较的是内容应该结果为true,但是实际为false?
问题:equals哪来的?
Object类
问题2:如果Object提供的equals无法满足实际需求?
equals方法重写