Java复习-面向对象

二 面向对象:

2.1封装

核心思想就是“隐藏细节”、“数据安全”:将对象不需要让外界访问的成员变量和方法私有化,只提供符合开发者意愿的公有方法来访问这些数据和逻辑,保证了数据的安全和程序的稳定。也就是属性和方法的封装

典型案例:属性私有,提供getter setter方法

2.2继承和类的实例化

子类继承父类里面所有的属性和方法,构造方法除外使用关键字:extends

​ 私有的属性和方法也可以被继承 ,但是不能被访问

(1)在多个不同的类中抽取出共性的数据和逻辑,对这些共性的内容进行封装一个新的类即父类(也叫做超类或基类),让之前的类来继承这个类,那些共性的内容在子类中就不必重复定义,比如 BaseDAO、BaseAction 等。

(2)Java 的继承机制是单继承,即一个类只能有一个直接父类。

(3)如果子类和父类有同名成员变量和方法,子类可以使用 super 关键字调用父类的成员变量和方法,上述使用方式前提是成员在子类可见。

(4)在调用子类构造方法时,会隐式的调用父类的构造方法 super()。如果父类没有无参构造方法,为了避免编译错误,需要在子类构造方法中显式的调用父类的含参构造方法。

(5)子类创建时调用父类构造方法:子类需要使用父类的成员变量和方法,所以就要调用父类构造方法来初始化,之后再进行子类成员变量和方法的初始化。因此,构造方法是无法覆盖的。

(6)当子类需要扩展父类的某个方法时,可以覆盖父类方法,但是子类方法访问权限必须大于或等于父类权限。

(7)继承提高了程序的复用性、扩展性,也是 Java 语言多态特征的前提。

(8)在实际开发、程序设计过程中,并非先有的父类,而是先有了子类中通用的数据和逻辑,然后再抽取封装出来的父类。

实例化过程

(1)JVM 读取指定 classpath 路径下的 class 文件,加载到内存,如果有直接父类,也会加载父类;

(2)堆内存分配空间;

(3)执行父类、子类静态代码块;

(4)对象属性进行默认初始化;

(5)调用构造方法;

(6)在构造方法中,先调用父类构造方法初始化父类数据;

(7)初始化父类数据后,显示初始化,执行子类的构造代码块;

(8)再进行子类构造方法的特定初始化;

(9)初始化完毕后,将地址赋值给引用

2.3抽象

现实生活中的具体某个事物 转化成Java里面类的过程,只抽象与业务相关联的属性和方法例如:人(ID,姓名,年龄,电话,家庭住址 buy();eat();walk()?

2.4多态

一个事务的多种表现形式

​ 编译时多态:看左边(父类)

​ 运行时多态:看右边(子类)

​ Person p=new Person(); //普通创建对象(不是多态)

​ Person p=new Student(); //多态

​ Person p=new Teacher(); //多态

​ Shape shape=new Circle(); //多态

​ List list=new ArrayList(); //多态

2.5静态变量与成员变量与static关键字,this和super关键字,final关键字

静态变量就是被static关键字修饰的变量,在类被实例化时初始化,有且这有一份,被多个对象共享

成员变量是属于对象的变量,每个对象的成员变量不相同

final:最终的 终极的

属性或者变量:不可被修改 常量,命名:全部大写

方法:不可被重写

类:不可被继承

static:静态的

属性或者变量:属于类的,类加载的时候执行,共享的,有且只有一份,可以通过类名直接访问

方法:属于类的,类加载的时候执行,可以通过类名直接访问,一般工具类定义的时候使用

this:当前对象

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值