Java面向对象 —— 封包和继承

面向对象

概念:关注现实存在的事物的各方面的信息,从对象的角度出发,根据事物的特征进行程序设计

对象:用来描述客观事物的一个实体(万物皆对象,真实存在)

类:具有相同属性(有什么)和方法(做什么)的一组对象的集合(抽象的概念,是对类型的描述)

通常先定义类,再实例化为对象

例:

类、属性和方法

 

定义类

 创建并引用对象

声明对象:类名+对象名;【在内存的中开辟空间,为null】

实例化对象:new 构造方法();【在内存的区域里开辟空间,完成属性赋值等操作】

通过“=”将声明和实例化操作连接,经过赋值操作,将堆空间中的地址传递到栈中的内存空间里

 成员属性默认初始值

面向对象编程三大重要特征:封装、继承、多态

构造方法

1.构造方法与类同名且没有返回值

2.只能在对象实例化的时候调用

3.一个类中可以有多个构造方法---构造方法重载

4.当没有指定构造方法时,系统会自动添加无参的构造方法

5.当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法

this关键字

this:当前对象的默认引用

this的使用:

调用成员属性,解决成员属性和局部变量同名冲突

放在构造方法的第一条

封装 

一、什么是封装

1、通过该类提供的方法来实现对隐匿信息的操作和访问

2、隐藏对象的信息

3、留出访问的接口

二、特点

1、只能通过规定的方法访问数据

2、隐藏类的实例细节,方便修改和实现

三、如何封装

1、修改属性的可见性(设为private)

2、创建getter/setter方法(设为public用于属性的读写)

3、在getter/setter方法中加入属性控制语句(对属性值的合法性进行判断)

步骤1为【隐匿对象】,步骤2和3为【留出接口】

一、作用

1、管理java文件,进行多文件的数据管理,用包进行项目功能的分块管理

2、解决同名文件冲突

二、语法

package + 包名

注意:

1、必须放在java源文件中的第一行

2、一个java源文件中只能有一个package语句

3、包名全部英文小写

4、命名方式:域名倒序+模块+功能

三、导入包

语法:

import 包名.类名;

例:

导入包中全部类:

import com.imooc.*;

导入包中指定类:

import com.imooc.animal.Cat;

Static关键字

1、static+属性 —— 静态属性、类属性

2、static+方法 —— 静态方法、类方法

3、static+类 —— 不存在静态类

4、static+方法内局部变量 —— 不存在方法中的静态局部变量

5、static+代码块 —— 静态代码块

注:代码块分为,普通代码块、构造代码块、静态代码块

注意问题

1、静态成员的生命周期

类加载时产生,销毁时释放,生命周期长

2、静态方法中的成员调用

静态方法中可以直接访问类中的静态成员,不能直接访问类内的非静态成员

若想访问非静态成员,只能通过对象实例化后,用对象的形式进行访问

3、各种代码块的执行顺序

静态代码块只执行一次,构造代码块在每次对象实例化的时候调用

普通代码块在每次调用方法的时候顺序调用

继承

一、概念

1、一种类与类之间的关系

2、使用已存在的类的定义作为基础建立新类

3、新类的定义可以增加新的数据或新的功能,也可以用父亲的功能,但不能选择性地继承父亲

4.满足A is B则可以使用

二、特点

1.利于代码复用

2.缩短开发周期

三、语法

1.使用extends实现封装(子类 / 派生类 extends 父类 / 超类 / 基类)

2.单一继承,只能有一个父亲

四、继承后的初始化顺序

父亲静态成员 -》 子类静态成员 -》 父亲对象构造 -》 子类对象构造

super

作用:父亲成员方法,父亲属性,父亲构造方法

特点:

1、子类的构造的过程中必须调用其父亲的构造方法,默认调用无参的构造方法

2、如果子类构造方法中既没有显式标注,而父亲又没有无参的构造方法,则编译错误

3、使用super调用父亲指定构造方法,必须在子类的构造方法的第一行

this:当前类对象的引用super:父亲对象的引用
访问当前类的成员方法访问父亲的成员方法
访问当前类的成员属性访问父亲的成员属性
访问当前类的构造方法访问父亲的构造方法
不能在静态方法中使用不能在静态方法中使用

super和this的对比

方法重写方法重载
在满足继承关系的子类中在同一个类中
方法名、参数列表与父亲相同方法名相同
返回值小于等于父类(既可以是子类)参数个数、顺序、类型不同
访问修饰符的限定范围大于等于父亲方法返回值类型、访问修饰符任意

方法重写和方法重载对比

访问修饰符本类同包子类其他
private

ok

默认okok
protectedokokok
publicokokokok

访问修饰符

Object类

1.Object类是所有类的父亲

2.Java中的每个类都可以使用Object中定义的方法

equals()

toString()

final

1.修饰类表示不允许被继承

2.修饰方法表示不允许被子类重写

3.修饰的方法可以被继承

4.修饰变量表示不允许修改

5.引用类型的变量:初始化之后不能再指向另一个对象,但指向的对象的内容是可变的

6.可配合static使用

注解

可声明在包、类、属性、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释。

按照运行机制分:

1.源码注解

2.编译时注解

3.运行时注解

按照来源分:

1.来自JDK的注解

2.来自第三方地注解

3.我们自己定义的注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值