300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Java继承 子类默认在构造函数中用super()调用父类构造函数

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

时间:2024-06-04 17:21:50

相关推荐

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

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='雌';

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。