Java 面向对象:继承,构造器参数super()
2018-03-29 21:37
309 查看
package com.neusoft.override; /** * super:可以调用父类中的资源 * 1. super.属性名 * 2. super.方法名 * 3. super()表示调用父类中构造器 * * 注意:如果子类继承了父类,父类中定义了一个有参数的构造器,此时子类就找不到父类中无参数的构造器了。编译器就会报错 * 解决的方法: * 1.在父类中创建一个无参数的构造器 * 2.在子类中也定义一个有参数的构造器并且在这个构造器中通过super(参数1,参数2)去调用父类中有参数的构造器 * */ import org.omg.CORBA.PUBLIC_MEMBER; class D { int i = 1; public D(){//S1.父类构造无参数方法 } public D(int a, String b) {//P2.父类本有参数 System.out.println(""); } public void test_d() { System.out.println("test_d ..."); } } class E extends D { public E(int a, String b) {//P1.子类本无参数 super(a, b);//S2.子类构造有参函数,并在第一行用super(含参) System.out.println("11111111111"); } int i = 2; public void test_e() { super.test_d(); System.out.println("1"); } } public class SuperDemo { public static void main(String[] args) { E e = new E(1,"2");//11111111111 e.test_e();//test_d ... 1 } }
package com.neusoft.animal; import javax.xml.bind.SchemaOutputResolver; public abstract class Animal { private String name; private int legNum; public Animal() { } public Animal(String name, int legNum) { // this.name = name; // this.legNum = legNum; //初值,用get、set可以不写 } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getLegNum() { return legNum; } public void setLegNum(int legNum) { this.legNum = legNum; } public abstract void shout(); }
package com.neusoft.animal; public class Cat extends Animal{ public Cat(String name,int legNum){ super(name, legNum); } public void shout(){ System.out.println("miaomiao ... "); } }
package com.neusoft.animal; public class Duck extends Animal { public Duck(String name, int legNum) { super(name, legNum); } public void shout() { System.out.println("gaga ... "); } public static void main(String[] args) { Animal animal1 = new Duck("tom", 2); animal1.shout(); Animal animal2 = new Cat("tom123", 4); animal2.shout(); } }
相关文章推荐
- java学习之旅41--面向对象_14_继承_super_构造器的调用_继承的内存分析(非常重要)
- java语言基础(33)——面向对象(父类中没有无参构造编译报错——无法将类 xxx中的构造器 xxx应用到给定类型 实际参数列表和形式参数列表长度不同)
- java之面向对象:继承extends、super、覆盖override的用法
- Java学习之面向对象(方法的重写 overwrite,super的使用,继承中的构造方法)
- 8、java高级面向对象-重载、构造器重载、初始化块、this、super、对象构造和初始化分析、覆盖、toString
- Java面向对象5——类的继承与权限控制,重写与super
- java 继承、构造器、super、this
- java中常遇到的小问题——static关键字、继承访问控制方式、构造器的继承与super关键字
- 41_面向对象_14_继承_super_构造器的调用_继承的内存分析(非常重要)
- Rhyme/java 隐式参数super的介绍与继承的内存分析
- 【java初学笔记2】马士兵-java-面向对象-31-练习继承、super等内容
- [疯狂Java]面向对象:构造器(this、super)
- 第二十四、Java面向对象三大特性之继承与super关键字
- [疯狂Java]面向对象:继承、覆盖、super
- java基础之面向对象的继承
- Java基础--面向对象(继承、抽象类、接口)
- Java中继承、构造器、代码块的执行顺
- java--super_get_set_继承与拓展_调用由近到远(课堂)
- 黑马程序员----Java基础之面向对象(封装 继承 多态)
- java面向对象(继承,子父类函数特点2,final)