面向对象
形式参数和返回值
方法的形参(方法返回值)
基本数据类型,传递对应的数据类型的这种值
引用数据类型:
引用类型是(具体)类:需要传递该类的具体对象
抽象类:需要传递的是该抽象类的子类对象
接口:需要传递该接口的子实现类对象
内部类:(观察源码 :存在内部类的方式)
在一个类A中定义另一个类B,类B就是类A的内部类.
内部类的分类:
不管是成员内部类还是局部内部类,都是可以访问外部类的成员,包括私有.
成员内部类(非静态的):在外部类的成员位置定义的这个类.
直接通过外部类访问成员内部类中的成员方法
格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
对象名.内部类中的方法();
成员内部类的修饰:
private :保证数据的安全性;
static:为了数据的方便调用
静态的成员内部类:
通过外部类访问静态的成员内部类中的成员方法:
格式:外部类名.内部类名 对象名 = new 外部类名.内部类名() ;
对象名访问.方法();
静态的成员内部类中,不管成员方法是静态的还是非静态的,只要访问外部类的成员,该成员必须
被static修饰!
局部内部类:在外部类的局部位置中定义的类:
针对jdk1.8以下
局部内部类访问局部变量的时候,该变量必须被final修饰,局部变量-->常量(常驻内存)
通过外部类访问局部内部类的成员方法;
创建外部类对象
使用外部类对象调用外部类的成员方法;
匿名内部类:
前提:接口/类(具体类/抽象类)
格式:
new 接口名/类名(){
重写或者实现方法();
} ;
匿名内部类的本质:继承该类或者实现该接口子类(子实现类)对象
多态
多态形成条件:
1)有继承
2)有重写
3)父类引用指向子类对象
多态中的成员访问特点
a:成员变量
编译看左边,运行看左边。
b:构造方法
创建子类对象的时候,会访问父类的构造方法,对父类的数据进行初始化。
c:成员方法
编译看左边,运行看右边。
d:静态方法
编译看左边,运行看左边。
Object:任何类的根类,任何继承自该类
有三种获取字节码文件对象的方式
1)getClass() ; 它可以获取当前类的字节码文件对象(class 类对象)
2)数据类型的class属性
String.class Student.class
3)Class类提供了一个静态方法:
forName(String path):path:当前类的全路径名称 (开发中常用的)
hashCode() ; 返回的int类型整数类型理解地址值,它不是实际地址值(hashtable:哈希表
跟他有关系)
getClass():class 类对象
Class类
String getName() ;返回的就是当前类的全限定名
包名.类名;
toString():建议他所有的子类都重写该方法
防止输出对象名称的时候,打印的是地址值