Java继承

/*
* 继承:
*   提高代码的复用性,父类的功能,更一般化的字段和方法放在超类中。子类可以直接使用,且派生类通过扩展超类而特殊化,使子类功能更加强大
*   Java中只支持单继承,一个类只有一个父类
*   使用extends关键字表示
*   继承是个体与个体之间的继承
*   私有化属性不能被继承
*   一个类如果没有显示继承另外一个类,则该类默认继承 Object
*       java.lang.Object 是Java中所有类的超类,Object中的属性及方法所有类共享
*
* 目的:提高代码的重用性
*
* 作用:
*   代码重用,子类可以直接使用父类的方法和属性
*   便于扩展,如果父类功能不能满足子类需求,可以对父类方法进行重写
*   使用多态
*
* 语法:public class 类名 extends 父类名{类体}
*
* */
public class _01_Extends extends A {
    public static void main(String[] args) {
        SubClass sub = new SubClass();
        SupClass sup = new SupClass();
        // 父类的引用指向子类
        SupClass sup1 = new SubClass();

        sub.test3();
        sup.test1();

        // 因为继承,子类可以使用父类的属性
        sub.test1();
        sub.test2();
        System.out.println("========");
        sup1.test1();
        double salary = ((SubClass) sup1).salary;
        System.out.println(salary);
        // 父类的引用指向子类,但不能调用子类独有的方法。父类对象转换成子类,即可使用子类独有的方法和属性,
        ((SubClass) sup1).test3();

        int age = sub.age;
        // 子类不继承父类的static变量和方法,这是属于类本身,但子类可以访问。static修饰和类属于同一级别
        String name = sub.name;
        System.out.println(age);
        System.out.println(name);

        System.out.println(sup1 instanceof SubClass);

        System.out.println("=======");
        // A中protected修饰属性,同类、同包、有继承(一定是通过子类去调用,static修饰可直接访问)
        _01_Extends ss = new _01_Extends();
        // 需要用子类对象去 调用protected修饰的属性
        System.out.println(ss.i);
//        System.out.println(A.i);
        System.out.println(ss.x);
        System.out.println(A.x);

    }
}
// 没有显示继承,则默认继承Object
public class _02_Extends {
    public static void main(String[] args) {
        _02_Extends s = new _02_Extends();
        String s1 = s.toString();
        System.out.println(s1);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值