Java抽象类不可创建对象,但可以调用静态方法将建一个对象
2017-08-16 16:49
489 查看
Java抽象类不可创建对象,但可以调用静态方法将建一个对象,利用多态创建子类对象上转成父类类型。
附代码:
public abstract class Dog {
private int age;
private String sex;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Dog(int age, String sex, String name) {
super();
this.age = age;
this.sex = sex;
this.name = name;
}
public Dog() {
super();
// TODO Auto-generated constructor stub
}
public void eat() {
System.out.println(name + "吃骨头");
}
public abstract void shout();
public static Dog getinstance() {
Dog dog = new Teddy();
return dog;
}
public static Dog getinstance(int age, String sex, String name) {
Dog dog = new Teddy(age, sex, name);
return dog;
}
}
public class Teddy extends Dog {
public Teddy() {
super();
// TODO Auto-generated constructor stub
}
public Teddy(int age, String sex, String name) {
super(age, sex, name);
// TODO Auto-generated constructor stub
}
@Override
public void shout() {
System.out.println(getName() + "汪汪汪");
}
}
public class NewAbstract {
public static void main(String[] args) {
Dog dog=Dog.getinstance(2,"男","旺财");
dog.eat();
dog.shout();
}
}
附代码:
public abstract class Dog {
private int age;
private String sex;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Dog(int age, String sex, String name) {
super();
this.age = age;
this.sex = sex;
this.name = name;
}
public Dog() {
super();
// TODO Auto-generated constructor stub
}
public void eat() {
System.out.println(name + "吃骨头");
}
public abstract void shout();
public static Dog getinstance() {
Dog dog = new Teddy();
return dog;
}
public static Dog getinstance(int age, String sex, String name) {
Dog dog = new Teddy(age, sex, name);
return dog;
}
}
public class Teddy extends Dog {
public Teddy() {
super();
// TODO Auto-generated constructor stub
}
public Teddy(int age, String sex, String name) {
super(age, sex, name);
// TODO Auto-generated constructor stub
}
@Override
public void shout() {
System.out.println(getName() + "汪汪汪");
}
}
public class NewAbstract {
public static void main(String[] args) {
Dog dog=Dog.getinstance(2,"男","旺财");
dog.eat();
dog.shout();
}
}
相关文章推荐
- java 和 JavaScript都可以在创建一个对象时,就可以通过这个对象调用相应方法
- 编写类A,该类创建的对象包含一个方法f输出英文字母表,再编写一个A类的子类B,要求必须继承A类的方法f(不允许重写),子类创建的对象不仅可以调用方法f输出英文字线表,而且调用子类新增的方法g输出希腊字
- 字符串与正则表达式1、字符串 String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显著。
- 尝试创建一个父类,在父类中创建两个方法,在子类中覆盖第二个方法,为子类创建一个对象,将它向上转型到基类并调用这个方法。
- 静态方法不能直接调用实例方法和变量,但可以间接调用(即在静态方法中创建类的实例,然后调用)
- java创建一个子类对象是会调用父类的构造方法会不会创建父类
- 今天发现c#中的实例后的对象是不能调用静态方法,以前学Java的时候是可以的.
- 当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的.
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
- java创建一个子类对象是会调用父类的构造方法会不会创建父类
- 继承与合成基本概念 继承:可以基于已经存在的类构造一个新类。继承已经存在的类就可以复用这些类的方法和域。在此基础上,可以添加新的方法和域,从而扩充了类的功能。 合成:在新类里创建原有的对象称为合成。
- 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。
- 为什么一个对象调用的类方法可以访问该类其他对象的私有成员
- java程序练习:尝试创建一个父类,在父类中创建两个方法,在子类中覆盖第二个方法,为子类创建一个对象,将他向上转型到基类并调用这个方法。
- 创建一个静态方法,给它传入一个对象,请循环的打印出该对象所在类的类名和所实现的方法名(华为笔试)
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- 关于“如何做到在一个类内不通过创建另一个类的对象,却调用另一个类的方法”的问题
- java 类调用静态方法不需要实际对象存在吗,仅仅将类装载到内存中就可以了吗
- 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象
- 5.编写一个程序,有两个类,其中类MAX中具有两个方法,方法名都是max,一个方法能够比较两个数的大小,另外一个方法能够比较三个数的大小。在另外一个类中创建对象,调用这两个方法,分别输出两组数:2、6