java基础知识:继承

来源:互联网 发布:室内设计软件培训班 编辑:程序博客网 时间:2024/05/20 18:43

1.继承:必须类与类之间有所属关系才可以继承,如 is a 的关系。

2.子父类中的变量:1.如果子类出现与父类相同的名字的私有变量,结果是无法访问(私有变量,只在本类中有效);

                                2.如果子类出现与父类相同的名字的非私有变量,子类要访问本类中的变量用this,子类要访问父类中的变量用super

                  this:代表本类对象的引用,super:代表父类对象的引用。

3.子父类中的函数:当子类与父类出现相同的非静态函数时,子类对象调用该函数时,会运行子类函数的内容;如同父类函数被覆盖一样。(多态特性)

                             覆盖:子类覆盖父类,必须保证子类的权限大于等于父类权限,才可以覆盖。2.静态只能覆盖静态。

4.子父类中的构造函数:在对子类进行初始化时,父类的构造函数也会运行,因为子类构造函数第一行有一条隐式语句:super(),并且子类中所有构造函数默认第一行都是super();

        子类的所有构造函数,都会访问父类中空的构造函数。

  5. 当父类中没有空参数的构造函数时,子类必须通过手动通过super语句形式来制定要访问父类中的构造函数。当然,子类也可以用this语句来访问本类中的构造函数。

 6.重载:同名函数的不同参数列表,参数列表不同的含义包含参数的个数不同,参数的数据类型不同;函数的返回值和修饰符也可以不同。作用范围是:同一个类中

   重写:子类和父类的方法要一模一样(包括权限修饰符,返回值类型),只是函数体不同。作用范围是:两个类以上发生的关系。

7.代码实例:

public class Fu {
 private int m=3;
 int n=4;
public Fu(){
 System.out.println("woshi fu");
}
}

public class Zi extends Fu{
 int n=9;
public Zi(){

//super();默认
 System.out.println("woshi zi");
}
public Zi(String s){

//super();默认
 System.out.println("woshi "+s);
}
public void show(){
 System.out.println(this.n+">>"+super.n);
}
}

 

public class Test {
 public static void main(String[] args) {
  Zi z=new Zi();
  z.show();
  Zi z2=new Zi("有参数");
 }

}

打印结果为:

woshi fu
woshi zi
9>>4
woshi fu
woshi 有参数

将父类中的构造函数注释掉

public class Fu {
 private int m=3;
 int n=4;
 /**
public Fu(){
 System.out.println("woshi fu");
}
**/
}

再次调用的结果为:

woshi zi
9>>4
woshi 有参数

将程序修改:


public class Fu {
 private int m=3;
 int n=4;
 /**
public Fu(){
 System.out.println("woshi fu");
}
**/
 public Fu(String s){
 System.out.println(s);
 }

}

public class Zi extends Fu{
 int n=9;
public Zi(){
 super("dd");
 System.out.println("woshi zi");
}
public Zi(String s){
 super(s);
 System.out.println("woshi "+s);
}
public void show(){
 System.out.println(this.n+">>"+super.n);
}
}

测试结果:

dd
woshi zi
9>>4
有参数
woshi 有参数

 

0 0
原创粉丝点击