面向对象
-
面向对象 与 面向过程
-
宏观整体:面向对象;
-
微观操作:面向过程;
-
-
本质:以类的方式组织代码,以对象的方式封装数据
-
this:代表当前类
-
一个项目应该只有一个main方法
构造器
-
一个类即使什么都不写,也会存在一个方法:构造方法;
-
方法名与类名相同;
-
无返回值;
-
使用new关键词,本质是在调用构造器;
-
用来初始化值;
-
Alt + insert:生成构造器
-
一旦定义了有参构造,如果想使用无参构造,则必须显式定义无参构造,否则无参构造就无效了;
内存分析
属性
默认初始化
-
数字类型:0 0.0
-
char类型:u0000
-
boolean类型:false
-
引用类型:null
封装
-
封装都是属性的封装,和方法无关;重写都是方法的重写,和属性无关;多态都是方法的多态,和属性无关。
-
属性私有(private修饰),通过 get/set 获取值(public 修饰);
-
set 中可以做一些安全性的验证判断。
类之间的关系:依赖、组合、聚合、继承
继承
-
“is a”的关系;
-
可被子类继承的 属性 和 方法,用“public”修饰;不被子类继承的 属性 和 方法,用“private”修饰(私有的属性和方法无法被继承);
-
所有的类都默认继承 Object 类,即使没有显式的定义继承任何类;
-
只有单继承,没有多继承,可以多级继承;
修饰符
public --> protected --> default --> private
Ctrl + h:打开类的继承关系结构图
super 与 this
-
super 代表父类对象;this 代表当前对象;
-
属性的使用:super.name、this.name;
-
方法的调用:super.print()、this.print();
-
私有的属性和方法无法被继承
-
调用父类构造方法:super();调用子类构造方法:this();
-
隐藏代码“super()”,默认调用父类的无参构造器;且构造方法的调用必须放在方法的第一行;无论是super(),还是this();==> 因此,一个方法中只能调用一个构造器,要么 super(),要么 this();
-
如果父类的无参构造 因 有参构造 失效,则子类因无法调用父类无参构造而报错;这时,可以显式的调用有参构造;如果不显式的调用父类的有参构造,则默认调用父类的无参构造
重写
-
封装都是属性的封装,和方法无关;重写都是方法的重写,和属性无关;多态都是方法的多态,和属性无关。
-
重写的前提条件:
-
非静态方法;
-
不能是private方法;
-
有继承关系,子类重写父类的方法;
-
-
重写 与 重载
-
重写:
方法名、参数列表相同;方法体不同;
修饰符:范围可以扩大但不能缩小:public > protected > default > private
抛出的异常:范围可以缩小但不能扩大:ClassNotFoundException < Exception
-
重载:方法名相同、参数列表不同
-
-
静态方法:方法的调用,只与“=”左边定义的数据类型有关
-
静态方法:不重写
-
非静态方法:重写
多态
-
封装都是属性的封装,和方法无关;重写都是方法的重写,和属性无关;多态都是方法的多态,和属性无关。
-
Java 中方法调用是在运行时才动态确定调用哪一个的;
-
不能多态的方法:
-
static 方法;
-
final 方法;
-
private 方法。
-
-
多态的前提条件:
-
继承
-
重写
-
父类引用指向子类对象:Father f = new Son();(要么是父类 和 子类 的关系;要么是有联系;否则会出现类型转换异常:ClassCastException)
-
instanceof
-
Father instanceof Son
类型转换:
同基本类型数据的转换规则:低转高:自动转换;高转低:强制转换。
父类引用指向子类对象:低 转 高;对
子类引用指向父类对象:高 转 低;❌

浙公网安备 33010602011771号