java 继承super_Java继承和super的用法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

继承的关键字:extends

格式如下: class 子类名 extends父类名{

...

}

例如学生是继承人类这一父类的.

class student extends person{

...

}

如果一个类的声明没有使用关键字extends,则这个类默认是继承Object类的.Object是所有类的父类.Object是java.lang包中的类.

当一个子类继承了一个父类时,子类可以调用父类中的所有方法和成员变量.子类也可以单独自己声明方法或者变量下面的代码创建了4个class.分别是Dog,Cat,Animal和包含主函数的Main类.其中Dog和Cat是继承父类Animal的.

Cat继承Animal类:

package com.cnblogs;

public class Cat extends Animal{

//不带参数的默认构造器

public Cat(){

//super();必须出现在构造方法的首行.//this();也如此.

super();

// super("XX",10); 该代码表示调用父类带参的构造器

System.out.println("Cat构造器"); }

/*publicString name;

public int age;

public void walk(){

System.out.println("Cat....walk");

}

public void sleep(){

System.out.println("Cat....sleep");

} */

//注解提示

@Override

public void how(){

System.out.println(name +" "+"Cat....miaomiao");

//super 强制调用父类的show()方法法.

//如果没有super,show();是this.show();的默认写法.

//步骤是:先调用子类的show()方法.子类如果没有show方法才调用父类的show()方法

super.show();

}

public void show(){

System.out.println(name +" "+"Cat----->show");

}

}

声明Dog类:

package com.cnblogs;

public class Dog extends Animal {

/*public String name;

public int age;

public void walk(){

System.out.println("Dog....walk");

}

public void sleep(){

System.out.println("Dog....sleep");

} */

public void how(){

System.out.println(name +" "+"Dog....wangwang"); }

疯狂软件Java培训紧跟最新的Java潮流技术,国内首家讲解Java 8新特征,根据企业工作中需要的开发技术,让学员学习的课程是企业最需要的实用技术,而且也保障学员能把这些技能点学会、学好,并且疯狂软件教育的课程实时更新,在信息技术快速发展的情况下,可以保证学员学到更新更主流的技术。师资雄厚,教师均拥有8年以上的项目实践经验,疯狂软件Java课程是理论与实践相结合,这样保障了学员很好的掌握理论知识同时,也能根据理论的指导做好实际的工作。

}

创建一个Animal的父类:

package com.cnblogs;

//Animal不写继承就是默认继承Object类. //抽象类不能new.传入的是子类的实例对象.

public abstract class Animal extendsObject{

public String name;

public int age;

//默认的不带参的构造器

public Animal(){

this("baobao",2);

//this();调用的是下面带参的Animal的方法

System.out.println("Animal--->()");

}

//带参的构造器.给属性赋初始值

public Animal(String name,int age){

this.name = name;

this.age = age;

System.out.println("Animal--->(name,age)");

}

public void walk(){

System.out.println(name +"---->walk");

sleep();

how();

//this.show 调用的是子类的show()方法,如果子类没有show()方法.在调用父类的show()方法.

this.show();

}

public void sleep(){

System.out.println(name +"---->sleep");

}

//抽象方法.

public abstract void how();

public void eat(){

System.out.println(name +"---->Eat");

}

public void play(){

System.out.println(name +"---->Play");

}

public void show(){

System.out.println(name +" "+"Animal---->show");

}

}

Main类(包含主函数):

package com.cnblogs;

public class Main{

public static void main2(String[] args) {

//生成一个cat对象

Cat cat = new Cat();

cat.name ="xiaohua";

cat.age = 3;

cat.walk();

cat.how();

//生成一个dog对象

Dog dog = new Dog();

dog.name = "xiaomei";

dog.age= 3;

dog.walk();

dog.eat();

dog.how();

//调用的是调出来的对象

Animal animal = new Cat();

animal.name = "HH";

//调用的是子类Cat()的how()方法.

animal.how();

Animal animal2 = new Dog();

animal2.name = "XX";

//调用的是子类Dog()的how方法

animal2.how();

animal.walk();

//GetMsg方法要求传入的是子类cat,所以传入的必须是cat,而不能是animal.

GetMsg(cat);

GetMsg(dog);

GetMsg(animal2);

}

/* public static void GetMsg(Cat cat){

cat.how();

}*/

//将子类的对象传入给父类的引用//比上面的传入单独的cat灵活,一般使用下面这种方法

public static void GetMsg(Animal animal){

animal.how();

}

/** *1. new一个对象以后先调用子类Cat的第一个方法,运行super();调用父类Animal的第一个方法

*2. 父类中的构造方法执行this();方法,this方法又调用Animal带参数的方法并输出;在返回不带参的构造器执行this();下面的输出语句

*3. 在返回子类Cat中执行super();下面的语句,输出"Cat构造器"

*4. 接着animal.how()调用new出来的对象 cat的how()方法

*5. 执行子类Cat()方法中的how()方法,并输出.

*6. 接着在运行how()方法中的super().show;然后调用父类Animal的show()方法.并输出相应的结果. **/

public static void main(String [] args){

Animal animal = new Cat();

animal.how(); }

}

super();调用父类的构造器,方法和属性.

this();调用该方法的当前对象.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值