龙空技术网

java类的封装、继承、多态、初始化过程

梧桐小哥 85

前言:

而今看官们对“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封装继承