面向对象
2020-04-27 18:06:49 1 举报
AI智能生成
Java面向对象知识要点
作者其他创作
大纲/内容
final关键字
概念:最终的,最后的
1、修饰变量(成员变量和局部变量),不允许在修改值
2、修饰方法,不允许子类重写
3、修饰类,不允许子类继承
abstract关键字
概念:抽象的
1、修饰方法:抽象方法
抽象方法:只有方法的声明,没有具体的实现,{}也没有,直接分号结束
将方法的声明和具体的实现分离。
所在的类,必须是抽象的
2、修饰类:抽象类
抽象类:不能被实例化,不能创建对象
抽象类中可能包含抽象方法(也可以没有抽象方法,还是要以抽象类的方式实例化)
必须等待子类继承,并实现所有的抽象方法,才允许创建子类对象
如果子类没有全部实现抽象方法,那么子类也必须声明为抽象方法,再等子类继承并实现抽象方法
所以,抽象类一般用于做父类。
抽象类:成员变量,静态成员变量,成员方法,静态方法,构造方法,抽象方法。
接口
概念:接口就是一个协议,一个规则,一个标准,一个功能声明
关键字
interface 接口名{}
实现类implement 接口{}
语法
1、定义静态常量:默认修饰符 public static final
2、定义抽象方法:默认修饰符 public abstract
注意点
1、多实现:一个实现类可以同时实现多个接口,表示同时满足多个规则
2、多继承:类只能单继承,但是接口可以多继承,那么实现类要实现所有的方法,包括继承来的
3、如果一个实现类没有实现接口中的所有抽象方法,那么该类是抽象类,要等子类来继承,并实现
4、一个实现类 可以继承父类的同时,在实现接口
5、接口中的特殊方法
1、也可以有静态方法,但很少这么干(与类中的静态方法类似,接口名直接调用)
2、JDK1.8之后,还允许default方法,这个可以有方法体
补充:default要写出来,不同于权限修饰符的 默认;default的用法只在接口中有
补充:default要写出来,不同于权限修饰符的 默认;default的用法只在接口中有
作用
1、降低了线程的耦合性
2、定义的都是规则,保持接口的一致
3、接口可以多继承,使用起来更灵活。弥补了java单继承的局限性
编程思想
面向过程
关注点是过程——站在一个执行者的角度去考虑事情,做事情。例如:Lanbda表达式
面向对象
关注点是对象——站在指挥者的角度
面向对象的思维方式
1、思考问题中涉及到对象有哪些
2、何为这些对象。(构建类)
3、对象和对象的关系
A:继承关系:is-a
B:实现关系:实现类,实现接口
C:依赖关系:一个类作为另一个类方法的参数
D:关联关系:一个类作为另一个类的属性
类和对象
类
概念:同一类事物的抽象描述
成员变量:描述类的外部特征,“名词”
成员方法:描述类的行为功能,“动词”
对象
类的一个具体到实例
对象.属性:进行赋值或取值操作
对象.方法:将方法进行调用
将类进行实例化就是创建对象,将同一类的对象进行抽象描述就是构建类
构造方法
又叫构造器,构造函数,Constructor
就是一个特殊的方法
声明:
修饰符:只允许访问权限
返回值类型:没有,不能写void
方法名:必须与类名一致
参数列表:有参,无参
修饰符:只允许访问权限
返回值类型:没有,不能写void
方法名:必须与类名一致
参数列表:有参,无参
调用:
必须用new关键字调用,开辟堆内存,创建对象
必须用new关键字调用,开辟堆内存,创建对象
注意点:如果一个类中,没有显示构造方法,那么由编译器自动添加一个无参的构造方法
还可以直接创建匿名对象
有=右边但创建对象,没有=右边的引用
三大特征
封装性
概念:“打包”,隐藏类的实现细节,对外提供统一操作
体现
类的封装
方法的封装
属性的封装
1、private修饰属性
2、提供getter和setter方法,进行属性的获取和赋值
注意:boolean类型的属性,getter方法名为:isXXX()
访问权限修饰符
1、private
限于类的内部能够访问
2、默认的
限于同一包下能够访问
3、protected
限于同包下能够访问,不同包需要是子类中才能够使用
4、public
没有限制
this关键字
1、代表本类的对象,可以直接访问本类的属性和方法。如果本类没有,会访问父类。
2、代表本类的构造方法,this(),无参构造。要位于首行
继承性
概念:描述两个的关系,一个子类继承父类
1、子类可以直接访问父类非私有化的属性和方法
2、子类可以新增自己的属性和方法
3、子类可以重写父类已有的方法
作用
1、降低程序的冗余,避免重复代码
2、子类扩展父类的功能
3、模拟现实世界的关系
关键字:extends
class SubClass extends SuperClass
is-a 的关系
不是有重复代码,就要使用继承。要看两个类,是否满足is-a的范式
继承的局限性
java中类只能单继承:一个类只能有一个父亲,但是允许多层继承
子类对象的创建过程
1、先调用父类的构造方法,如果我们没有写,编译器自动添加
默认调用父类的无参构造方法
2、再调用子类的构造方法
super关键字
1、可以直接访问父类的属性和方法
2、指代父类的构造方法(父类及以上):无参构造,有参构造。super(),要位于首行
方法的重写:override
多态性
概念:事物的多种 形态
方法的多态
方法的重载:overlad
概念:一个功能方法,根据参数的不同,执行的具体方法也不同
规则:
A:同一个类中
B:方法名必须一致
C:参数列表必须不同:个数,类型,顺序
A:同一个类中
B:方法名必须一致
C:参数列表必须不同:个数,类型,顺序
对象的多态
向上转型
一个父类引用,指向子类对象(将子类对象看成父类类型)
那么可以访问父类的属性和方法,以及子类重写方法,会失去子类新增
向下转型
以向上转型为前提,在将子类对象,转为子类类型
那么可以访问父类的属性和方法,以及子类重写的方法,还有子类新增的方法
instaceof关键字
判断一个对象是否属于一个类
否则:ClassCastException异常,向下执行失败
结合方法的重写
父类引用,指向父类的对象,执行的是父类的方法(不是子类重写的)
父类引用,指向子类的对象,执行的是子类重写的方法
应用
1、将父类类型作为参数,可以传入任意的子类对象
2、将父类类型作为返回值,可以返回任意的子类对象
static关键字
1、静态属性
类的属性,属于类,仅一份。由类来方法。对象也可以访问,多个对象共享一份数据
随着类的加载而产生
应用:该类的所以对象,该属性值相同,就可以设计为static的。节省内存,操作便捷
2、静态方法
类的方法,属于类,由类调用。对象也可以调用(不推荐)
静态方法中可以有静态属性和静态方法
静态方法中不能有非静态属性和非静态方法,以后this和super关键字
应用:如果一个方法不涉及到对象的内容,就可以设计为静态方法
工具类 :往往都是静态方法,有类名直接调用。
3、代码块
A:局部代码块
也叫普通代码块,就是方法中的一块代码。{},if,for,while。。。
注意作用域
B:构造代码块
类里,方法外的代码块。
当创建对象,随着构造方法 的调用而执行,优先于构造方法执行。创建几个对象,就执行几次。
可以统一初始化非静态属性
C:静态代码块
static修饰的代码块
当程序加载的时候执行,优先于main()方法执行,只执行1次
如果有些代码块必须在项目启动的时候就执行,可以使用静态代码块
D:同步代码块
多线程
4、静态内部类
0 条评论
下一页