java面向对象总结
1.类中有成员变量和成员方法
2.类和对象的区别:
类是对某一类事物的抽象描述
对象用于表示现实中该类事物的个体
3.局部变量和成员变量的区别:
1.位置不同
定义在类中的变量是成员变量
定义在方法中或者代码块里的变量是局部变量
2.在内存中的位置不同
成员变量存储在堆内存的对象中
局部变量存储在栈内存的方法中
3.生命周期不同
成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失(gc垃圾回收机制)
局部变量随着方法的运行而出现在栈中,方法执行完弹栈消失
4.初始化不同
成员变量有默认的初始化值
局部变量没有默认值
4.封装的好处
1.提高了代码的复用性
2.隐藏了实现细节,但是要对外提供可以访问的方式
3.提高了安全性
5.封装关键字 private
私有仅仅是封装的体现形式而已
6.关键字 this
解决成员变量和局部变量同名问题
谁调用了成员方法,this就代表谁
7.继承的好处
1.提高了代码的复用性,提高软件开发效率
2.让类与类之间产生了关系,提供了多态的前提
8.继承的注意事项
1.java中,类只支持单继承
2.多个类可以继承一个父类
3.java支持多层继承,一个类的父类可以去继承另外的父类
9.继承--子父类中成员变量特点
子父类中出现同名的成员变量时,在子类中需要访问父类的非私有成员变量时,需要使用super关键字
10.继承--子父类中成员方法特点
子父类中出现与父类一模一样的方法是,会进行方法重写
在子类中,访问父类中的成员方法用super关键字调用方法
11.方法重写的注意事项
1.必须保证权限大于等于父类
2.方法的返回值,方法名,参数列表都要一模一样
12.抽象类关键字abstract
13.抽象类特点:
1.抽象类和抽象方法都要被abstract修饰,抽象方法一定要定义在抽象类中
2.抽象类不可以直接创建对象
3.抽象类子类只有覆盖了所有的抽象方法后,子类才可以创建对象
14.抽象类的细节
抽象类一定是个父类
抽象类中可以定义普通方法
15.关键字abstract不可以与那些关键字共存
1.private关键字,私有的方法无法继承,abstract与private共存,子类无法重写抽象方法,无意义
2.final关键字,
3.static关键字
16.接口
1.接口重的放都是公共访问的抽象方法
2.接口中无法定义普通的成员变量
17.接口中成员的特点
1.接口中可以定义变量,但是必须用public static final修饰,final修饰的变量称之为常量
2.接口中可以定义方法,但必须用abstract修饰
3.接口不可以创建对象
4.接口的子类必须重写接口中所有的抽象方法后,子类才可以实例化创建对象
18.接口思想的好处
1.接口的出现扩展了功能
2.接口是暴漏出来的规则
3.接口的出现降低了耦合性,设备与设备之间实现了解藕
19.接口与抽象类的区别
相同点
1.都位于继承的顶端,用于被其他类实现或者继承
2.都不能之间创建对象
3.都可以包含抽象方法,子类都必须重写这些方法
不同点
1.抽象类可以定义普通方法,接口只能包含抽象方法
2.一个类只能继承单个父类,却可以实现多个接口
3.抽象类是这个事物中应该具备的内容,接口是这个事物中额外的内容
20.多态
父类引用变量指向子类对象
多态的前提是必须有子父类关于或者类实现接口
在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法
注:同一个父类的方法会被不同的子类重写,调用方法是,调用的是各个子类重写后的方法
21.多态中成员变量的特点
编译时期:参考的是引用型变量所属类中是否有被调用的成员变量
运行时期:参考的是引用型变量所属类中是否有被调用的成员变量
成员变量:编译运行都看父类
22.多态中成员方法的特点
编译时期:参考引用变量所属类
运行时期:参考引用变量所指的对象所属的类
成员方法:编译时看父类,运行时看子类
23.关键字instanceof
判断某个对象是否属于某种数据类型
24.多态-转型
当子类对象赋值给一个父类引用变量时,就是向上转型
向下转型:一个已经向上转型的子类对象可以使用强转的格式,将父类引用变量转换为子类
25.多态的好处与弊端
向上转型:当不需要面对子类类型时或者使用父类的功能就能完成相应的操作
向下转型:当需要使用子类特有的方法
向下转型的好处:可以使用子类特有功能
弊端:需要面对具体的子类对象时,向下转型时容易发生classcastExceotion异常,在转换之前必须做类型判断
总结:
封装:隐藏了实现细节,但是还要对外提供可以访问的方式
继承:子类自动拥有父类可继承的属性和方法
多态:子类对象指向父类引用变量
26.构造方法的特点
1.构造方法没有返回值类型,也不需要写返回值,对象创建完,方法就指向结束
2.构造方法名称必须和类名一致
3.构造方法没有具体的返回值
27.构造方法细节
如果没有显示指定构造方法,系统会字段添加默认的构造方法
一个类中可以有多个构造方法,多个构造方法以重载的形式存在
构造方法可以被private修饰
构造方法只执行一次
28.this关键字
this()所在的方法,this就代表哪个对象
调用其他构造方法的语句必须定义在构造方法的第一行,初始化动作要先执行
29.super关键字
在创建子类对象是,父类的构造方法会先执行,在子类所有构造方法的第一行默认有super()
30.关键字final特点
1.final修饰的类不可以被继承,但是可以继承其他类
2.final修饰的方法不可以被子类重写,父类中没有被final修饰的方法,子类重写后可以用final修饰
3.final修饰的变量称为常量,只能赋值一次,并且终身不变
4.引用类型的变量只为对象地址值,地址值不能改,地址内的对象属性值可以修改
5.修饰成员变量,需要在创建对象前赋值,否则报错
31.关键字static特点
1.被static修饰的成员变量属于类,不属于这个类的对象
2.被static修饰的成员可以通过类名直接访问
32.注意
1.静态内容是优先与对象存在,只能访问静态,不能使用this/super,静态修饰的内容在静态区
2.同一个类中,静态成员只能访问静态成员
3.main方法为静态方法仅仅为程序执行入口,不属于任何一个对象,可以定义在任意类中
4.多态中静态方法的调用,编译运行都看父类,调用成员变量,编译运行全看父类
33.匿名对象的特点
创建匿名对象直接使用,没有变量名
匿名对象在没有指定其引用变量是,只能使用一次
匿名对象可以作为方法接收的参数、方法的返回值使用
34.访问修饰符
1.public 可以在任何地方访问
2.protected可以在本包中和子类中访问
3.default 可以在本包中访问
4.private 可以在本类中访问
注:如果类用public修饰,类名必须与文件名相同,一个文件中只能有一个public修饰的类
35.局部代码块特点
1.以{}划定区域的代码区域,变量的作用域不同
2.方法和类都是以代码块的方式划定边界
36.构造代码块特点
1.优先于构造方法执行,用于执行所有对象需要的初始化操作
2.每创建一个对象都会执行一次构造代码块
37.静态代码块特点
1.优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行
2.该类不管创建多少对象,静态代码块只执行一次
3.可用于给静态变量赋值,用来给类初始化
浙公网安备 33010602011771号