标签:不能 输出 类型 自动 值类型 pre src 构建 定义
在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。
案例代码1-1:
1 package cn.itcast.chapter04.example01; 2 3 //定义一个类 4 class Animal{ 5 String name; //定义name属性 6 7 // 定义动物叫的方法 8 void shout(){ 9 System.out.println("动物发出叫声"); 10 } 11 } 12 13 //定义Dog类继承Animal类 14 class Dog extends Animal{ 15 //定义一个打印name的方法 16 public void printName(){ 17 System.out.println("name="+name); 18 } 19 } 20 21 //定义测试类 22 public class Example{ 23 public static void main(String[] args){ 24 Dog dog= new Dog(); //创建一个Dog类的实例对象 25 dog.name="沙皮狗"; //为Dog类的name属性进行赋值 26 dog.printName(); //调用dog类的getInfo()方法 27 dog.shout(); //调用dog类继承来的shout()方法 28 } 29 }
其输出结果为:
在类的继承中,需要注意一些问题,具体如下:
1.在Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类,例如下面这种情况是不合法的:
1 class A {} 2 class B {} 3 class C extends A,B{} //C类不可以同时继承A类和B类
2.多个类可以继承一个父类,例如下面这种情况是允许的:
1 class A{} 2 class B extends A{} 3 class C extends A{} //类B和类C可以同时继承类A
3.在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类,例如C类继承自B类,而B类又可以去继承A类,这时,C类也可以称作A类的子类。例如下面的情况是允许的:
1 class A{} 2 class B extends A{} //类B继承类A,类B是类A的子类 3 class C extends B{} //类C继承类B,类C是类B的子类,同时也是类A的子类
4.在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。例如上面的实例中,B类是A类的子类,同时又是C类的父类。
重写父类方法
在继承关系中,子类会自动继承父类中定义的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写。需要注意的是,在子类中重写的方法需要和父类被重写的方法具有相同的方法名,参数列表以及返回值类型。
在案例代码1-1中,Dog类从Animal类继承了shout()方法,该方法在被调用时会打印“动物发出叫声”,这明显不能描述一种具体动物的叫声,Dog类对象表示犬类,发出的叫声应该是“汪汪汪”。
案例代码1-2:
为了解决这个问题,可以在Dog类中重写父类Animal中shout()方法;
1 package cn.itcast.chapter04.example02; 2 3 //定义Animal类 4 class Animal{ 5 //定义动物叫的方法 6 void shout(){ 7 System.out.println("动物发出叫声"); 8 } 9 } 10 11 //定义Dog类继承Animal类 12 class Dog extends Animal{ 13 //定义狗叫的方法 14 void shout(){ 15 System.out.println("汪汪汪......"); 16 } 17 } 18 19 20 //定义测试类 21 public class Example02{ 22 public static void main(String[] args){ 23 Dog dog=new Dog(); //创建Dog类的实例对象 24 dog.shout(); //调用dog重写的shout()方法 25 } 26 }
其运行结果为:
标签:不能 输出 类型 自动 值类型 pre src 构建 定义
原文地址:https://www.cnblogs.com/wangjiong/p/9757617.html