JAVA中传参
当一个类作为参数传递时就传递该类的实例化对象。
抽象类或者接口就传递该类的子对象的实例化或者使用匿名内部类进行传递。
类或者接口或抽象类作为返回值的时候同理。
包的定义及注意事项
定义格式:
package 包名;
注意事项:
A:package语句必须是程序的第一条可执行的代码
B:package语句在一个java文件中只能有一个
C:如果没有package,默认表示无包名
import
概念:不同包下的类之间的访问,我们发现,每次使用不同包下的类的时候,都需要加包的全路径。比较麻烦。这个时候,java就提供了导包的功能
格式: import 包名;
权限修饰符
private(私有的) , 默认 , protected(受保护的) , public(公共的)
private只能在本类中直接使用
默认可以在本类和同一个包下(子类和无关类)
protected可以在本类和同一个包下(子类和无关类)不同包下(子类)
public本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类)
内部类
一个类在另一个类的内部就是内部类
内部类可以访问外部类的所有成员包括私有的,但是外部类不能直接访问内部类,需要创建对象。
成员内部类,局部内部类
在成员位置被定义的类叫成员内部类
在局部位置被定义的类叫局部内部类
内部类调用格式
外部类.内部类 对象名= new外部类().new内部类;
成员内部类被静态修饰后的访问方式是:
外部类名.内部类名 对象名 = new 外部类名.内部类名();
局部内部类注意:
A: 可以直接访问外部类的成员
B: 可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能
C:局部内部类访问局部变量必须用final修饰
匿名内部类
感觉用途就是当一个类是抽象的或者是接口时 并且需要传递时不用重新写一个继承的子类,只需要new一个他本身在家{};即可
abstract class Person {
public abstract void show();
}
class PersonDemo {
public void method(Person p) {
p.show();
}
}
class PersonTest {
public static void main(String[] args) {
//如何调用PersonDemo中的method方法呢?
PersonDemo personDemo = new PersonDemo();
Person person=new Person(){
@Override
public void show() {
System.out.println("重写");
}
};
personDemo.method(person);
}
}
//如果不这样则需要建一个Person的子类去继承在使用子类去进行传参