class Demo
{
void method1(){}
}
class Demo1 extends Demo
{
void method2() {}
}
class Demo2 extends Demo
{
void method3() {}
}
new Demo1.method1();?可以
new Demo1.method2();?可以
new Demo1.method3();?不可以
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
继承-私有的访问
如果在概念&特点那一章节中
public class Person {
private String name;
int age;
}
1
2
3
4
那么在ExtendsDemo中还可不可以调用name?
这是一个细节:对于父类中私有的部分,子类对象是无法直接访问的。
但子类还是具备父类那个私有的部分。
继承-成员变量的特点
子父类出现后,代码上的一些特点。
1.成员变量。
2.成员函数。
3.构造函数。
public class Fu {
int num=4;
}
class Zi extends Fu
{
int num2=5;
void show()
{
int num3=6;
System.out.println("num="+num);
System.out.println("num2="+num2);
System.out.println("num3="+num3);
}
}
public class ExtendsDemo2 {
public static void main(String[] args) {
new Zi().show();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
结果:
num=4;
num=5;
num=6;
1
2
3
如果把上述的Zi改成 ``` class Zi extends Fu { int num=5; void show() { int num=6; System.out.println("num="+num); } } ``` 结果
num=6//先是局部变量
1
怎么让结果=5?
当局部变量和成员变量重复时,用this区分
class Zi extends Fu
{
int num=5;
void show()
{
int num=6;
System.out.println("num="+this.num);
}
}
1
2
3
4
5
6
7
8
9
结果:
num=5
1
如何让结果=4?
当子父类中的出现了同名的成员变量,用关键词super来区分。
class Zi extends Fu
{
int num=5;
void show()
{
int num=6;
System.out.println("num="+super.num);
}
}
1
2
3
4
5
6
7
8
9
结果:
public class Fu {
void show() {
System.out.println("fu show run");
}
}
class Zi extends Fu
{
void show()
{
System.out.println("zi show run");
}
}
public class ExtendsDemo3 {
public static void main(String[] args) {
Zi z=new Zi();
z.show();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
结果:
zi show run
1
因为直接找到子类中的方法,运行即可。不用再找父类中的。
覆盖的应用
class Phone {
public void call() {
System.out.println("fu show run");
}
public void sendMsg() {
System.out.println("fu show run");
}
public void show() {
System.out.println("number");
}
}
class NewPhone extends Phone
{
//定义了来电显示功能.注意:父类已经定义了来电显示功能。子类直接拿过来用就行。
//但是子类对功能的内容要有自己的定义。保留父类功能的声明,建立子类功能特有的内容,这就是覆盖的应用。
public void show() {
//System.out.println("number");
super.show();
System.out.println("name");
System.out.println("pic");
}
}
public class ExtendsDemo3 {
public static void main(String[] args) {
NewPhone p=new NewPhone();
p.show();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
覆盖的注意事项