JAVA笔记(十)--面向对象三大特性

156 阅读3分钟

回顾:

​ 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方法重写