关闭

Java学习笔记---继承和多态

标签: java
307人阅读 评论(0) 收藏 举报
分类:

继承

public class Circle extends GeometricObject{} //Circle-子类 GeometricObject-父类
super() //调用父类的无参构造方法,必须在之类的构造方法的第一句中使用
super(parameters); //调用父类的有参构造方法
super.方法名(参数);//引用父类的方法

覆盖

子类取与父类相同的方法名,并对方法进行修改,这种叫做方法覆盖。为了覆盖一个方法,这个方法必须使用与父类相同的签名以及相同的返回值类型在子类中进行定义。

public class Circle extends GeometricObject{
    public Circle(){
        System.out.println("成功调用了Circle的构造方法");
    }

    public void printA(){
        super.printA();
        System.out.println("成功调用覆盖后的方法A\n");
        //super.printB(); 无法访问父类的私有方法
    }

        static void printC(){
        System.out.println("成功调用子类中重写的方法C");
    }
    public static void main(String[] args){
        Circle myCircle = new Circle();
        myCircle.printA();
        //Circle.printB(); 无法在类外调用私有方法
        myCircle.printC();
        GeometricObject.printC();
    }
}

class GeometricObject{
    GeometricObject(){
        System.out.println("成功调用了GeometricObject的构造方法");
    }

    void printA(){
        System.out.println("\n成功调用方法A");
    }

    private void printB(){
        System.out.println("成功调用方法B");
    }

    static void printC(){
        System.out.println("成功访问静态方法C");
    }

}

输出结果
成功调用了GeometricObject的构造方法
成功调用了Circle的构造方法

成功调用方法A
成功调用覆盖后的方法A

成功调用子类中重写的方法C
成功访问静态方法C

注意:

1、私有方法、数据域能被子类继承,但无法调用,跟没被继承一样。

2、仅当实例方法是可访问的,它才能被覆盖。如果子类定义的方法在父类中是私有的,那么这两个方法完全没有关系。

3、与实例方法一样,静态方法也能被继承。但是,静态方法不能被覆盖。如果父类中的静态方法被子类重新定义,那么父类中的静态方法将被隐藏。可以使用语法:父类名.静态方法名 调用隐藏的静态方法。

对象类object和它的toString()方法

java中的每一个类都源于java.lang.Object类,如果定义类时没有指定的继承类,那么这个类就默认集成了 Object 类

例如

public class ClassName{
...
}

等价于

public class ClassName extends Object{
...
}

Object类中有一个方法toString().

toString()方法的签名是:

public String toString()

该方法返回的信息通常不是很有用,所以常常会去覆盖它。使它可以返回一个代表该对象的描述性字符串。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5753次
    • 积分:137
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类