1、什么是面向对象
面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
2、方法的定义和调用
异常:
3、类与对象的创建
一个类中只能有一个public,但是可以有多个class
①使用静态的方法
②非静态的方法
注意静态方法和非静态方法的调用的关系:
静态方法不能调用非静态的方法
值传递:
引用传递:对象,本质还是值传递
4、构造器详解
new的话会自动赋默认值
this
会有默认的初值
可以去看一下生成的class文件
有参构造器
快捷键:alt+insert
5、创建对象内存
6、封装
属性私有,get、set
通过get、set来操作私有变量
快捷键:alt+insert
还可以对不合法的数据进行一个操作:
封装的好处:
方法的重载主要在于:方法名和参数列表
7、继承
4种权限
ctrl+h:可以看继承的结构
可以看出Person是继承自object的
java中的所有类都直接或者间接的继承自object
8、super
私有的东西没有办法被继承
student中有隐藏的父类的构造方法
调用父类的构造器必须放在子类的构造器的第一行
super和this不能同时在子类的构造器中使用:
如果父类的构造器是有参的:
9、方法重写
重写都是方法的重写,和属性无关
重写:@override
1、使用static的:
父类的引用指向了子类
2、去除static
重写:默认的调用的父类的test
所以:静态方法和非静态的方法区别很大
重写的只能是非静态的方法和public的
10、多态
运行时多态
父类引用指向子类对象。如果子类重写了父类的,那么就会使用子类的方法
对象能执行哪些方法,主要看对象左边的类型,和右边关系不大
有些类不能重写:
1、static方法 属于类的,不属于实例
2、final 常量
3、private方法
11、instanceof和类型转换
instanceof:判断一个对象是什么类型
instanceof 类型转换-》引用类型的转化
能不能编译通过主要在于:是否存在父子关系
12、static
静态变量
类变量只有一个
静态方法
或
静态代码块
只执行一次
匿名代码块:可以赋初始值
静态导入包
被final修饰的不能在被继承
13、抽象类
abstract 就是抽象类
不能new抽象类
java是单继承
java为了多继承,但是接口可以多继承
14、接口
interface
implements
15、内部类
注意内部类的构造方法:
内部类可以获得外部类的私有属性
如果加上static:会出错
局部内部类
匿名类
接口也可以: