修饰符和继承
程序员文章站
2022-07-03 23:18:23
...
Java常见的各种修饰符
一、访问权限修饰符
- public:所有类可见
- protected:同一个包和不同包的子类可见
- default/friendly:同一个包可见
- private:同一个类可见
修饰符 | 同类 | 同包 | 子类 | 其他类 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
friendly | √ | √ | × | × |
private | √ | × | × | × |
二、非访问权限修饰符
- static:创建类方法和类变量。
- final:修饰类、方法和变量。final修饰的类不能被继承、修饰的方法不能被重写、修饰的变量为常量。
- abstract:创建抽象类和抽象方法。
- synchronized:用于多线程同步
- volatile
- transient
Java中的继承以及super关键字
- Java中的所有类都直接 或者间接的继承了object类
- 在用new关键字创建一个子类对象时,子类的无参构造方法在默认的调用了父类的无参构造方法且是进入子类的构造方法第一步执行父类的构造方法。
public class Person(){
public Person(){
System.out.println("Person执行了无参构造方法");
}
}
class Stduent extends Person(){
public Student(){
// 隐藏代码:super();
System.out.println("Student执行了无参构造方法");
}
}
创意一个student 的对象时,会输入“Person执行了无参构造方法”,换行然后再输出“Student执行了无参构造方法”。
3. 封装过程中若写了有参构造方法,则原有的默认的无参构造方法失效,此时需重写无参构造方法。
4. 若父类没有无参构造方法则子类的无参构造方法中需要显示的调用父类的有参构造方法,否则会报错。
class Person{
private String name;
public Person(String name){
System.out.println("Person调用了构造方法");
}
}
class Student extends Person{
public Student(){
super();
System.out.println("Person调用了构造方法");
}
}
此时会报错,需改为
class Person{
private String name;
public Person(String name){
System.out.println("Person调用了构造方法");
}
}
class Student extends Person{
public Student(){
super("xiaoming");
System.out.println("Person调用了构造方法");
}
}
即调用父类的有参构造方法,传递一个字符串。
上一篇: typescript(三) 类的定义、继承、修饰符
下一篇: struts国际化,资源文件读取三