1、关于文件名
java源文件扩展名是.java,java编译后的文件扩展名是.class。
2、关于构造函数
如果类中没有构造函数,则会默认其有一个无参的构造函数。
子类必须先调用父类的构造函数,如果没有调用系统会默认在第一行调用父类的无参构造函数//super() ,如果父类没有无参构造函数,则会报错。
显式调用时也需要将构造函数写在第一行,不然会报错。
流程:创建了一个新子类对象---> 调用父类构造函数(无参/有参)--->执行自身语句
class parent{
parent(){
System.out.println("父类");
}
parent(int a){
System.out.println("父类有参");
}
}
class child extends parent{
child(){
System.out.println("子类");
}
child(int a){
System.out.println("子类有参");
}
}
public class test {
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
child a = new child();
child b = new child(1);
in.close();
}
}
运行结果:
3、多态
特点:1、继承
2、要有方法的重写
3、父类引用指向子类对象,如:Parent a = new Child()
4、多态中,编译看左边,运行看右边
向上转型:Parent a = new Child();
子类对象当成父类对象,只能调用父类的功能/方法,如果子类重写了父类中声明过的方法,调用该方法时使用的是子类中的。但是此时对象是把自己看做是父类类型的,所以其他资源使用的还是父类型的。
向下转型:Child b = (Child)a; //将父类对象a强制转化为子类类型
向下转型时,是为了方便使用子类的特殊方法,也就是说当子类方法做了功能拓展,就可以直接使用子类功能。
4、修饰符与关键字
1、public: 均可访问。
2、protected: 这种权限是为继承而设计的,protected所修饰的成员,同包均可访问,外包只有子类可以访问。
3、包访问权限(无修饰): 只对同包的类具有访问的权限,外包的所有类都不能访问。
4、private: 私有的权限,只对本类的方法可以使用。
Private (私有) 是访问权限较为严格的修饰符,只允许当前声明它的类的内部访问。需要说明的是,类和接口的访问方式是不能被声明为私有的。
如果想要访问一个类的私有变量,可以通过在这个类中写一个公开的方法来调用它。这样既可以保证变量的私有性,又可以实现对它的调用及更改。
Final
1、被final关键字所修饰的变量为常量,即最终量,不可改变的量。
2、被final关键字所修饰的变量一定要出初始化,不管它是不是静态变量还是非静态变量
3、被final关键字所修饰的类不能被继承
4、被final关键字修饰的方法不能被复写
5、可用于修饰变量、方法、类等
6、在类中,系统会自动将未初始化的字段初始化为0,但final修饰的字段需要在定义时就对其手动赋值。