什么是继承 super 重载 重写
继承可以看成是类与类之间的衍生关系。比如狗类是动物类,牧羊犬类又是狗类。 于是我们可以说狗类继承了动物类,而牧羊犬类就继承了狗类。于是狗类就是动物类的子类(或派生类),动物类就是狗类的父类(或基类)。
使用方法 class 子类 extends 父类
1 1
1 class
子类
extends
父类 来看三段代码 public class Animal { int legNum; String aml; public Animal() { } public Animal(String aml) { this.aml = aml; //System.out.println(aml); } public void bark() { if (aml != null) { if (aml == "dog") { System.out.println("汪汪汪!!!"); }else{ System.out.println("不存在这个动物"); } }else{ System.out.println("动物叫"); } } }
x
1 public
class
Animal { 2
int
legNum ; 3
String
aml ; 4 5
public
Animal () { 6 7 } 8 9
public
Animal ( String
aml ) { 10
this . aml
=
aml ; 11
//System.out.println(aml); 12 } 13 14
public
void
bark () { 15
if ( aml
!=
null ) { 16
if ( aml
==
"dog" ) { 17
System . out . println ( "汪汪汪!!!" ); 18 } else { 19
System . out . println ( "不存在这个动物" ); 20 } 21 } else { 22
System . out . println ( "动物叫" ); 23 } 24 } 25 } //dog.java 使用狗=dog来继承父类Animal public class dog extends Animal{//可以看到继承Animal的dog内没有任何方法 }
1 //dog.java 使用狗=dog来继承父类Animal 2 public
class
dog
extends
Animal { //可以看到继承Animal的dog内没有任何方法 3
4 } //test.java 使用test来测试 public class test{ public static void main(String[] args){ dog touch = new dog(); //初始化dog //touch.bark(); //touch.hi(); touch.bark(); //调用"没有"方法的dog会发生什么? //touch.hi(); } }
x
1 //test.java 使用test来测试 2 public
class
test { 3
public
static
void
main ( String [] args ){ 4
dog
touch
=
new
dog (); //初始化dog 5
//touch.bark(); 6
//touch.hi(); 7
touch . bark (); //调用"没有"方法的dog会发生什么? 8
//touch.hi(); 9 } 10 } 执行test 运行结果 动物叫 可以看到我们成功调用了调用"没有"方法的dog.bark
向其传参dog 运行结果 //dog.java public class dog extends Animal{ public dog(){ } public dog(String aml){//在构造器阶段将传入的参数转发给父类Animal //super可以调用在子类调用父类的方法 如 super.xxx(); super(aml);//注意super若想向其构造器传递参数则不需要添加 "." 直接super(参数); 即可 } }
10 10
1 //dog.java 2 public
class
dog
extends
Animal { 3
public
dog (){ 4 5 } 6
public
dog ( String
aml ){ //在构造器阶段将传入的参数转发给父类Animal 7
//super可以调用在子类调用父类的方法 如 super.xxx(); 8
super ( aml ); //注意super若想向其构造器传递参数则不需要添加 "." 直接super(参数); 即可 9 } 10 } //test.java public class test{ public static void main(String[] args){ dog touch = new dog("dog");//初始化阶段传递参数dog //touch.bark(); //touch.hi(); touch.bark(); //touch.hi(); } }
1 //test.java 2 public
class
test { 3
public
static
void
main ( String [] args ){ 4
dog
touch
=
new
dog ( "dog" ); //初始化阶段传递参数dog 5
//touch.bark(); 6
//touch.hi(); 7
touch . bark (); 8
//touch.hi(); 9 } 10 }
重载就是相同的方法名字 传入的参数不同(参数类型不同 参数数量不同) 以做出不同回应 就是重载.举个例子 public class Test {//拿这个代码举例 //相同的方法名称 根据不同的传入参数类型和数量做出了不同的回应. void f(int i) { System.out.println("i=" + i); } void f(float f) { System.out.println("f=" + f); } void f(String s) { System.out.println("s=" + s); } void f(String s1, String s2){ System.out.println("s1+s2="+(s1+s2)); } void f(String s, int i){ System.out.println("s="+s+",i="+i); } public static void main(String[] args) { Test test = new Test(); test.f(3456); test.f(34.56f); test.f("abc"); test.f("abc","def"); test.f("abc",3456); } }
x
1 public
class
Test
{ //拿这个代码举例 2
//相同的方法名称 根据不同的传入参数类型和数量做出了不同的回应. 3
void
f ( int
i ) { 4
System . out . println ( "i="
i ); 5 } 6 7
void
f ( float
f ) { 8
System . out . println ( "f="
f ); 9 } 10 11
void
f ( String
s ) { 12
System . out . println ( "s="
s ); 13 } 14 15
void
f ( String
s1 , String
s2 ){ 16
System . out . println ( "s1+s2=" + ( s1 + s2 )); 17 } 18 19
void
f ( String
s , int
i ){ 20
System . out . println ( "s=" + s + ",i=" + i ); 21 } 22 23
public
static
void
main ( String [] args ) { 24
Test
test
=
new
Test (); 25
test . f ( 3456 ); 26
test . f ( 34.56f ); 27
test . f ( "abc" ); 28
test . f ( "abc" , "def" ); 29
test . f ( "abc" , 3456 ); 30 } 31 }
重写用以下代码来演示 在父类Animal不变的情况下 在dog.java(子类)写一个相同的方法名 即可完成重写 //dog.java public class dog extends Animal{ public dog(){ } public dog(String aml){ super(aml); } public void bark(){//此时的bark不再有Animal的判定 只是无脑返回动物叫了 System.out.println("动物叫 重写成功"); } }
x 12
1 //dog.java 2 public
class
dog
extends
Animal { 3
public
dog (){ 4 5 } 6
public
dog ( String
aml ){ 7
super ( aml ); 8 } 9
public
void
bark (){ //此时的bark不再有Animal的判定 只是无脑返回动物叫了 10
System . out . println ( "动物叫 重写成功" ); 11 } 12 } //test.java public class test{ public static void main(String[] args){ dog touch = new dog(); touch.bark(); } }
7
1 //test.java 2 public
class
test { 3
public
static
void
main ( String [] args ){ 4
dog
touch
=
new
dog (); 5
touch . bark (); 6 } 7 } 运行结果 动物叫 重写成功