前言:
而今看官们对“java封装继承”大概比较关切,姐妹们都需要分析一些“java封装继承”的相关文章。那么小编在网上汇集了一些有关“java封装继承””的相关内容,希望姐妹们能喜欢,各位老铁们一起来了解一下吧!封装
把类中的字段设置为private属性,在类外不可以访问
继承
使用extends关键字,java只支持单继承
【修饰符】 class A extends B{}
子类可以重写父类的方法,如果子类中需要调用父类被重写的方法,只能使用super.方法名()来调用
super:代表父类,使用情形如下
public class A extends B{
private int age;
private String name;
A(int age,String name){super(age);}//super在子类的构造方法中,只能出现在第一行,代表调用B类的有一个参数的构造方法
public void f(){ //子类的f方法
super.f();//调用父类的f方法
}
}
子类中构造方法的执行过程:先调用父类的初始化块,构造方法,在调用子类的初始化快,构造方法
多态
父类的引用,指向子类的实例,并且子类重写了父类的方法;
调用方法时,只能调用父类中含有的方法,如果使用属性,则使用的是父类的属性
public class A{
private int age;
private String name;
//setter和getter方法省略
public void f(){
System.out.println("age="+age);
}
public void g(){
System.out.println("name="+name);
}
}
public class B extends A{
private char sex;
//setter和getter方法省略
public void f(){
System.out.println("sex="+sex);
}
public void test(){
System.out.println("sex="+sex);
}
public static void main(String[] args){
A a = new B();
a.f();//调用的是B类的f方法
a.test();//这个是不行的,因为A类中没有这个方法
}
}
属性不具有多态性
初始化块
【static或者空】{ //初始化快代码;}
初始化块在构造方法之前执行,子类在创建实例时,
先调用父类的初始化块,父类的构造方法,在调用子类的初始化块,子类的构造方法
static修饰的静态初始化块,只会在类加载时执行一次,类加载时先加载父类的静态初始化块,再执行子类的静态初始化块
标签: #java封装继承