Java语言基础之super关键字
2015-10-23 11:06
477 查看
This 调用当前对象的属性,方法
Super 调用父类的构造器,属性,方法
This() super() 必须出现在构造方法的第一行
子类 dog:
package com;
public class Dog extends Animal{
// super 表示调用父类的方法,属性,以及构造函数
public Dog()
{
super("Dog"); // 直接调用父类有参构造器赋初始值
System.out.println("Dog 无参数构造器");
}
@Override
public void howl()
{
System.out.println(this.name+".... wangwang");
super.show(); // super 表示调用父类的show方法
}
父类animal:
package com;
// 父类这里是抽象类(abstract) 不能直接new 对象 需要具体的子类赋值
public abstract class Animal {
public String name;
public Animal()
{
this("Animal");
System.out.println("Animal 无参构造器");
}
public Animal(String name)
{
this.name=name;
System.out.println("Animal 有参构造器");
}
public void walk()
{
System.out.println(this.name+"...walk");
}
public void sleep()
{
System.out.println(this.name+"...sleep");
}
public void show()
{
System.out.println("Animal father.."+"show");
}
public abstract void howl();
}
main:
package com;
public class main {
/**
* @param args
*/
public static void main(String[] args) {
// 子类对象赋值给父类变量
//Animal animal = new Cat();
//animal.name="Cat";
//animal.walk();
// howl() 方法在父类中是抽象方法(abstract),没有实际定义,只是声明而已。
// 在Cat类中实际定义howl()方法的实现。
// 在父类变量在实现调用时,指向的是子类对象,所以howl()方法是子类的方法。
// 最后输出的是Cat.... miaomiao 而不是Cat.... xxxxx
//animal.howl();
// getMsg(animal);
Animal animal1 = new Dog();
//animal1.name="Dog";
animal1.walk();
animal1.howl();
//getMsg(animal1);
}
public static void getMsg(Animal animal)
{
animal.howl();
}
}
运行结果:
Super 调用父类的构造器,属性,方法
This() super() 必须出现在构造方法的第一行
子类 dog:
package com;
public class Dog extends Animal{
// super 表示调用父类的方法,属性,以及构造函数
public Dog()
{
super("Dog"); // 直接调用父类有参构造器赋初始值
System.out.println("Dog 无参数构造器");
}
@Override
public void howl()
{
System.out.println(this.name+".... wangwang");
super.show(); // super 表示调用父类的show方法
}
父类animal:
package com;
// 父类这里是抽象类(abstract) 不能直接new 对象 需要具体的子类赋值
public abstract class Animal {
public String name;
public Animal()
{
this("Animal");
System.out.println("Animal 无参构造器");
}
public Animal(String name)
{
this.name=name;
System.out.println("Animal 有参构造器");
}
public void walk()
{
System.out.println(this.name+"...walk");
}
public void sleep()
{
System.out.println(this.name+"...sleep");
}
public void show()
{
System.out.println("Animal father.."+"show");
}
public abstract void howl();
}
main:
package com;
public class main {
/**
* @param args
*/
public static void main(String[] args) {
// 子类对象赋值给父类变量
//Animal animal = new Cat();
//animal.name="Cat";
//animal.walk();
// howl() 方法在父类中是抽象方法(abstract),没有实际定义,只是声明而已。
// 在Cat类中实际定义howl()方法的实现。
// 在父类变量在实现调用时,指向的是子类对象,所以howl()方法是子类的方法。
// 最后输出的是Cat.... miaomiao 而不是Cat.... xxxxx
//animal.howl();
// getMsg(animal);
Animal animal1 = new Dog();
//animal1.name="Dog";
animal1.walk();
animal1.howl();
//getMsg(animal1);
}
public static void getMsg(Animal animal)
{
animal.howl();
}
}
运行结果:
相关文章推荐
- Java中的享元(flyweight)设计模式
- 用java字节码解释i++和++i(转)
- spring第一课,beans配置(上)
- hadoop1 eclipse插件编译
- eclipse中svn冲突解决
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse中使用SVN
- Java注意的地方
- Java输入流
- spring发送Email
- Spring mvc中前台表单自动绑定实体类(不用注释)
- springMVC 启动时 加载数据
- dubbo异常 DubboProtocol.createServer(DubboProtocol.java:331)
- Spring Boot的两种使用方式
- myeclipse优化
- java.lang.IllegalArgumentException: Negative time
- spring-org.springframework.beans.factory.BeanDefinitionStoreException及相关介绍
- Java 多维数组遍历
- Spring--quartz中cronExpression配置说明 (注意?说明)
- ElasticSearch学习2_Java version:1.7.0_51 suffers from critical bug及ES对JDK版本要求