您的位置:首页 > 编程语言 > Java开发

JAVA面向对象笔记

2019-08-18 14:51 1546 查看
类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=)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: