java面向对象笔记_JAVA面向对象笔记

JAVA面向对象笔记

类class

将一类事物的特征和动作,封装为属性和方法(封装相关数据,方法代码);

封装

实例,一个具体的个体(new创建)

可以保存独立的数据,独立控制执行指定方法;

引用

保存一个实例的地址

引用特殊值null

局部代码块:

在方法中提供一个{}.

局部代码块可以提高栈内存的效率,可以提前释放局部的变量内存。

构造方法

构造代码块:会在每一次创建对象时调用,构造代码块是先与构造方法执行的

使用方式:直接在类中提供一个{}

新建实例时执行,子类调用父类的无参构造方法

class定义类必须要有构造方法

不定义,默认为无参

构造方法作用:任意

常用方法:赋值

this

1.this.属性名---本类里的成员变量,当变量名重复时使用

2.this.方法名------本类的方法名

3.This(……)----本类里的构造方法,减少代码重复

This()只能用在构造方法中的第一行

Overload 方法重载:一个方法有多种参数传递方式

同名不同参数,

继承:

把原有类中的公共的代码抽取到一个新类中,原有类和新类使用extends关键字进行联。新类称之为父类,原有类称之为子类,子类会继承父类的所有属性和方法。但是子类只能使用对子类可见的属性和方法。

JAVA只支持单继承,只能继承一个父类,一个父类可以有多个子类

不继承父类的部分

构造方法

私有成员 private

子类实例

由父类实例和子类实例绑定,整体作为一个实例

调用时,先找子类,再找父类

Overried 方法重写:在父子类中出现了方法签名一致的非静态方法,就称之为重写(Override),或者称之为覆盖

子类调用父类方法时,父类方法不满足子类的需求,需要重写,

必须与父类的返回值与参数一致;

两同:方法名,参数列表相同

返回值异常两小:

1.返回值:

如果返回值为基本数据类型,子类的返回值必须和父类相同

如果返回类型为引用数据类型,子类返回值小于等于父类;

2.异常:

子类向上抛出的异常 要小于等于父类;

一大:

访问修饰符权限;public >protected>default>privade>

子类的访问修饰符权限必须大于等于父类;

Super

super关键字可以调用父类可见的方法和属性

super()和this()不能共存

1.super.属性名-----父类里面的成员变量

2.super.方法名---父类的方法名

3.super()/super(参数) ----调用父类的无参构造/可见方法

Super()只能出现在构造方法体第一句

每一个类的构造方法有默认的super();

多态:事物的多种形态

//编译看左边,运行看右边:

编译时多态:方法重载

运行时多态:向上造型,方法重写

一致的类型,所有子类型实例,都可以被当做一致的父类型来处理

向上转型:

定义一个父类的变量,用以引用子类的地址空间

只能调用父类中定义的方法

向下转型:

强制转换,需要保证转型的安全

Instanceof 判断运行期的类型

对真实类型及其父类型判断,都得到true

抽象类abstract

半成品的类,一个未完成的类

抽象方法只有方法定义,没有方法代码

需要用abstract关键词定义

1.作为通用方法在父类中定义;

2.要求子类必须完成该方法;

3.抽象类不能实例化,未完成时半成品;具体子类可以创建实例;

抽象要点

被abstract修饰的类称之为抽象类,被abstract修饰的方法称之为抽象方法

一个类中如果有抽象方法,这个类必须为抽象类

抽象类不能实例化!!!

抽象类必须要有一个子类,子类可以实现抽象类中的抽象方法.如果子类实现类的抽象方法,那么久可以通过向上造型来使用抽象类.

final不能修饰抽象类,final修饰的类为最终类不能被继承,抽象类必须要被继承

抽象类可以写构造方法的

抽象类可以提供普通方法

抽象类中的抽象方法可以重载

抽象类中抽象方法不能使用private修饰,抽象方法必须被子类实现

抽象方法不能被static修饰,静态方法可以直接使用类名调用,在抽象类中没有意义.

受java的单继承的影响,抽象类不能够同时继承多个类

接口interface

接口是功能的集合,接口是比抽象类更抽象的"类",在JDK1.8之前接口中只能放抽象方法.

接口是特殊的类

接口是结构设计共计,用来解耦合,隔离实现

语法:

Interface 代替class关键词

implements代替extends关键词

接口中只能定义:

公开的常量

//接口中是可以的定义变量,,

Public static finalinta=5;

//变量默认修饰符publicstaticfinal,实际上是一个常量

公开的抽象方法

Public abstract void show();//接口中的方法默认修饰符public abstract

接口不能实例化,必须在implements中实现接口中的抽象方法

接口中的方法可以重载

公开的内部类,内部接口

接口中没有构造方法

类可以同时实现多个接口:

Class A extends Object implements x,y,z{}

接口之间继承,不用实现关键词(可以继承多个接口),用extends

Interface A extends x,y,z{

}

一个类可以实现多个接口,子接口中可以有相同的方法(接口中只有方法名没有具体的实现代码)

java中接口是网状

java中继承是树状结构

java放弃了对接口的编译检查

Javap xxx.calss可以反编译

![](https://s1.51cto.com/images/blog/201908/18/6f444ec9c64b7cf101bdd778019c0d00.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

©著作权归作者所有:来自51CTO博客作者kepp007的原创作品,如需转载,请注明出处,否则将追究法律责任

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值