Java继承,子类默认在构造函数中用super()调用父类构造函数

原创 2016年06月02日 08:54:57

1.子类继承父类的方法属性,并重写父类的方法,子类修饰符不能比父类方法的修饰符的范围狭窄。

2.子类必须在构造函数中使用super()来调用父类的构造函数

说明:1.父类没有写构造函数(系统默认有一个无参构造函数),子类可以不写构造函数(可以理解为:子类的系统默认构造函数,默认调用了super();)

  2.如果父类有无参构造函数,子类可以不写构造函数(同上理解)

  3.如果父类有有参构造函数,则子类必须在自己的构造函数中显示的调用父类的构造函数即super(参数名)

  4.如果父类的构造函数只有一个,且修饰符是private,则不可以被继承。

Protect 与 默认 区别:

protected :成员 本类和子类可以访问。【其他类不可以使用(即使同一个包中)】

Frinedly(友好/默认):成员 本类和子类,同包可以访问【其他类可以使用】

继承中的构造方法的执行顺序:父类有构造函数,子类也写构造方法的时候必须显示的调用父类的构造方法【子类在穿件对象的时候,掉用构造方法的顺序是:

第一步:调用父类的构造方法

第二部:调用子类的构造方法】

测试:

//父类

package ExtendsTesting;


public class Animal {
private String type;
public String name;
int tall;
//友好
char sex;
//protect方法,尝试对比友好和protect的区别
protected void eat(String string){
System.out.println("我吃:"+string);
}
//构造方法
public Animal(String name){
this.name=name;
}
//用于对比this.super写的方法,会在Dog子类中重写
public void speak(String s){
System.out.println("Animal方法调用");
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}

}

//子类

public class Dog extends Animal{
int tall;
String type;
public Dog(String name){
super(name);
this.name=name;
super.tall=100;
this.setType("哺乳动物");
type=this.getType();
System.out.println(this.getType());
}
//构造函数问题
// public Dog(int tall){
// super(name);
// this.tall=tall;
// }
public void speak(){
//这里的this和super会不一样(对比super的作用)
super.speak("调用");
this.speak("调用");
System.out.println("我是狗狗的speak()函数");
}
public void speak(String s){//重写父类的方法
System.out.println(s);
}
}

//子类

public class Duck extends Animal{


public Duck(String name) {
super(name);
// TODO Auto-generated constructor stub
}

}

//main测试类

public class Testing_animal {
public static void main(String[] args) {
//狗类继承Animal类
//初始化时调用构造函数就输出了小黄的动物种类
Dog xiaohuang=new Dog("小黄");
//调用Dog的speak函数,在speak函数中掉用了它的父类animal的speak函数
xiaohuang.speak();
//调用Dog重写的函数speak
xiaohuang.speak("调用Dog中的speak(String s)方法");
System.out.println(xiaohuang.name+"的身高是:"+xiaohuang.tall+"\t我是:"+xiaohuang.getType());

//鸭子类继承Animal类
Duck yazi=new Duck("鸭子");
yazi.setType("禽类");
System.out.println(yazi.name+"的动物种类是:"+yazi.getType());
System.out.println("小黄的动物种类:"+xiaohuang.getType());
//eat是protect方法
yazi.eat("菜叶子");
//sex是友好的属性
yazi.sex='雌';
}
}

版权声明:

相关文章推荐

java中this用法 super()用法 以及构造方法

this 1、当全局变量跟局部变量重名时,表示使用全局变量(此时this指代本类对象) 例如  类 class A{     String name;     void setName(St...

第五章 类的继承和super的使用调用父类构造方法

类的继承 mammals dogs cats h...

错误记录--Java中子类继承父类必须调用父类的构造方法?

刚睡完午觉起来,有点迷糊,然后接着练习Java中元组(tuple)的时候突然就遇到这么个问题,关于继承的问题,奇怪在睡觉之前怎么就没发现这个问题呢,传说中的“面向睡一觉编程”吗。。。Orz先贴上代码:...

java中子类继承父类时是否继承构造函数呢?

java继承中对构造函数是不继承的。以下是例子: public class FatherClass { public FatherClass() {       System.out.println(...

Java子类构造函数中默认调用父类的空参构造函数

测试代码如下: 父类: public class ParentTest { public ParentTest(){ System.out.println(1); } public...

百度质量部实习生内推2016

一面: 面试前一天中午我刚好下课走在路上,打电话预约时间,因为我第二天下午都没有课,所以我说第二天下午都可以,对方就约了中午一点,当时有点震惊,难道中午都不午休么,不过也不好意思多问,直接答应。 第二...

java构造函数是否可继承,以及子类构造函数可否不使用super调用超类构造函数

转载地址: 问题一:java的构造函数能否被继承? 笔者初学java看的一本书说:“java的子类自然的继承其超类的“非private成员”。 通常java的构造函数被设置为public的(...

子类重写父类的构造函数

class baseClass{    public string Name;    public baseClass()    {    }    ...
  • sTeVes
  • sTeVes
  • 2010-01-02 23:41
  • 4684

Java 子类调用父类构造函数----super()详解

Java 子类调用父类构造函数----super()详解

java面向对象-子父类中构造函数的特点-子类实例化过程super

/* 3,子父类中的构造函数 在对子类对象进行初始化时,父类的构造函数也会运行 那是因为子类的构造函数默认第一行隐式的语句super(); super():会访问父...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)