java特性之二----继承

1.继承的概述

 

 

 =========================================================================================================================

2.继承的格式

 

 

 =======================================================================================================================

3.继承中成员变量的访问特点

Fu.java

package cn.itcast.day09.demo02;

public class Fu {

int numFu = 10;

int num = 100;

public void methodFu() {
// 使用的是本类当中的,不会向下找子类的
System.out.println(num);
}

}

======================================================================

Zi.java

package cn.itcast.day09.demo02;

public class Zi extends Fu {

int numZi = 20;

int num = 200;

public void methodZi() {
// 因为本类当中有num,所以这里用的是本类的num
System.out.println(num);
}

}

=============================================================================

Demo01ExtendsField.java

package cn.itcast.day09.demo02;

/*
在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式:

直接通过子类对象访问成员变量:等号左边是谁,就优先用谁,没有则向上找。


间接通过成员方法访问成员变量:该方法属于谁,就优先用谁,没有则向上找。
*/
public class Demo01ExtendsField {

public static void main(String[] args) {
Fu fu = new Fu(); // 创建父类对象
System.out.println(fu.numFu); // 只能使用父类的东西,没有任何子类内容
System.out.println("===========");

Zi zi = new Zi();

System.out.println(zi.numFu); // 10
System.out.println(zi.numZi); // 20
System.out.println("===========");

// 等号左边是谁,就优先用谁
System.out.println(zi.num); // 优先子类,200
// System.out.println(zi.abc); // 到处都没有,编译报错!
System.out.println("===========");

// 这个方法是子类的,优先用子类的,没有再向上找
zi.methodZi(); // 200
// 这个方法是在父类当中定义的,
zi.methodFu(); // 100
}

}

====================================================================================

4.区分子类方法中重名的三种

父类中成员变量int num=10;

子类中成员变量int num=20;

子类方法中局部变量 int  num=30;

 

 

 ========================================================================================

5.继承中成员方法的访问特点.

 

 

 ================================================================================================================

6.继承中方法的覆盖重写_概念

 

 

 =====================================================================================================================

7.继承中方法的覆盖重写_注意事项

注意:@Override关键字一定要写上,可以有效防止方法正确覆盖重写

 

 

 

 ========================================================================================================

 8.继承中方法的覆盖重写_应用

 

 ==========================================================================================================================

9.继承中构造方法的访问特点

Demo01Constructor.java

package cn.itcast.day09.demo07;

/*
继承关系中,父子类构造方法的访问特点:

1. 子类构造方法当中有一个默认隐含的“super()”调用,所以一定是先调用的父类构造,后执行的子类构造
2. 子类构造可以通过super关键字来调用父类重载构造。
3. super的父类构造调用,必须是子类构造方法的第一个语句。不能一个子类构造调用多次super构造。
总结:
子类必须调用父类构造方法,不写则赠送super();写了则用写的指定的super调用,super只能有一个,还必须是第一个。
*/
public class Demo01Constructor {

public static void main(String[] args) {
Zi zi = new Zi();
}

}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Fu.java

package cn.itcast.day09.demo07;

public class Fu {

public Fu() {
System.out.println("父类无参构造");
}

public Fu(int num) {
System.out.println("父类有参构造!");
}

}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Zi.java

package cn.itcast.day09.demo07;

public class Zi extends Fu {

public Zi() {
super(); // 在调用父类无参构造方法
// super(20); // 在调用父类重载的构造方法
System.out.println("子类构造方法!");
}

public void method() {
// super(); // 错误写法!只有子类构造方法,才能调用父类构造方法
}

}

================================================================================================================

10.super关键字的三种用法

 

 

 

 ========================================================================================================================

11.this关键字的三种用法

Fu.java

package cn.itcast.day09.demo09;

public class Fu {

int num = 30;

}

-------------------------------------------------------------------------------------------------------------------------------

Zi.java

package cn.itcast.day09.demo09;

/*
super关键字用来访问父类内容,而this关键字用来访问本类内容。用法也有三种:

1. 在本类的成员方法中,访问本类的成员变量
2. 在本类的成员方法中,访问本类的另一个成员方法
3. 在本类的构造方法中,访问本类的另一个构造方法
在第三种用法当中要注意:
A. this(...)调用也必须是构造方法的第一个语句,唯一一个
B. super和this两种构造调用,不能同时使用
*/
public class Zi extends Fu {

int num = 20;

public Zi() {
// super(); // 这一行不再赠送
this(123); // 本类的无参构造,调用本类的有参构造
// this(1, 2); // 错误写法!
}

public Zi(int n) {
this(1, 2);
}

public Zi(int n, int m) {
}

public void showNum() {
int num = 10;
System.out.println(num); // 局部变量
System.out.println(this.num); // 本类中的成员变量
System.out.println(super.num); // 父类中的成员变量
}

public void methodA() {
System.out.println("AAA");
}

public void methodB() {
this.methodA();//也可以直接写methodA()
System.out.println("BBB");
}

}

============================================================================================================

12.super与this关键字图解

 

 ===================================================================================================================================

13.Java继承的三个特点

 

 66666666666666666666666

posted @ 2020-02-28 15:33  Curedfisher  阅读(112)  评论(0编辑  收藏  举报