azure011328

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 
1.

 实际操作了一下,发现确实 super基类构造法只能在子类构造法前面。放在后面会报错。

 

2.

如果父类的构造方法调用了子类的方法或使用了子类的属性,那么在父类构造方法执行时,子类可能还没有被完全初始化,这将导致运行时错误。因此,不能反过来调用父类的构造方法。必须在子类的构造方法中先调用父类的构造方法,以确保父类的属性被正确初始化,然后再初始化子类的属性。

3.

复制代码
public class M1 {

   

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Children c=new Children();

    }

 

}

class Parent

{

    public Parent()

    {

        System.out.println("父类方法!!!");

    }

    public Parent(String s)

    {

        System.out.println(s);

    }

}

class Children extends Parent

{

   

    public Children()

    {

       

        super("调用父类方法!!!");

        //System.out.println("");

        System.out.println("孩子方法!!!");

    }

}
复制代码

 

4.

5.

 

 

 

 6.

 

Fruit类覆盖了Object类的toString方法。

结论: 在“+”运算中,当任何一个对象与一个String对象,连接时,会隐式地调用其toString()方法,默认情况下,此方法返回“类名 @ + hashCode”。为了返回有意义的信息,子类可以重写toString()方法。

7.请自行编写代码测试以下特性(动手动脑): 在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。

package practice;

 

public class UseSuperInherits

{

    public static void main(String[] args)

    {

       Child c=new Child();

       c.printValue();

    }

 

}

class Parent

{

    public int value=100;

    public void printValue()

    {

       System.out.println("parent.value="+value);

    }

}

class Child extends Parent

{

    public int value=200;

    public void printValue()

    {

       System.out.println("child.value="+value);

       super.printValue();

    }

}

运行结果:

 

 8.

 

复制代码
public class TestInstanceof
{
    public static void main(String[] args)
    {
        //声明hello时使用Object类,则hello的编译类型是Object,Object是所有类的父类
        //但hello变量的实际类型是String
        Object hello = "Hello";
        //String是Object类的子类,所以返回true。
        System.out.println("字符串是否是Object类的实例:" + (hello instanceof Object));
        //返回true。
        System.out.println("字符串是否是String类的实例:" + (hello instanceof String));
        //返回false。
        System.out.println("字符串是否是Math类的实例:" + (hello instanceof Math));
        //String实现了Comparable接口,所以返回true。
        System.out.println("字符串是否是Comparable接口的实例:" + (hello instanceof Comparable));
        String a = "Hello";
        //String类既不是Math类,也不是Math类的父类,所以下面代码编译无法通过
        //System.out.println("字符串是否是Math类的实例:" + (a instanceof Math));
    }
}
复制代码

 

 9.

 

 d=m,d=c运行时将会报错。因为m是父类对象,d是子类对象。将父类对象转化成子类对象,必须进行强制转换。而d和c是两个互不相干的类对象,所以不能将d赋值给c.

 10.

程序被写死了,无法更改数据

11.

11.多态编程有两种主要形式:

(1)继承多态:示例程序使用的方法

(2)接口多态:使用接口代替抽象基类,这个任务留为作业。

现在我们可以回答前面提出的问题了:为什么要用多态?它有什么好处?

使用多态最大的好处是: 当你要修改程序并扩充系统时,你需要修改的地方较少,对其它部分代码的影响较小!千万不要小看这两个“较”字!程序规模越大,其优势就越突出

 

posted on   淮竹i  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
 
点击右上角即可分享
微信分享提示