java学习之路 ——继承与多态

继承(extends):
    子类(派生类)继承父类(基类)的属性和方法
    一个类只能有一个父类,但是一个父类可以拥有多个子类
        判断: 在java里面继承都是单一继承
    私有的属性和方法不能继承

权限
    public         所有对象都能访问
    protected    同包可以访问。继承关系可以访问
    缺省            同包可以访问。
    private        只有这个类里面可以直接访问的属性,其他类访问不到

super()
    调用父类的属性和方法,或者,直接调用父类的构造函数
    super(),出现了那么必须放在第一位
    无论你写不写super(),他都会执行,都会去调用父类的构造函数
    
    
方法重写:在父类和子类里面:
    当子类里面有一个方法和父类的方法一模一样(方法名+参数+返回值权限一样或者提高)的时候,我们就称为子类重写了父类的方法
    
抽象方法:当一个对象里面的方法,不需要或者无法写实现的时候,我们就可以将这个方法定义为抽象方法 abstract
    抽象类:当一个类里面有一个抽象方法的时候,那么这个类就必须定义为抽象类
                   抽象类无法直接实例化

接口:当一个抽象类里面的所有方法都是抽象方法的时候,我们可以将这个抽象类定义成 接口
    对于接口,只能接口继承接口,类要实现接口(implements)
    接口里面的变量默认为静态变量 默认final
    接口可以多继承
    
    
什么是多态:  同一种形状 ,不同的体现
    特点:可扩展性极强。
    静态多态:编译时多态 ->方法重载
    动态多态:运行时多态 ->方法重写

关于多态:

1.使用父类类型的引用指向子类的对象

2.改引用只能调用父类中定义的方法和变量。

3.如果子类中重写了父类种的一个方法,那么在调用的时候,将会调用子类中的这个方法。(动态链接,动态调用)

4.变量不能被重写,重写的概念只针对于方法。

例题:

编译运行如下Java代码,输出结果是( )。

class Base {
          public void method(){
                       System.out.print ("Base method");
           }
}
class Child extends Base{
                public void methodB(){
                       System.out.print ("Child methodB");

                }
}
class Sample {
        public static void main(String[] args) {
               Base base= new Child();
               base.methodB();
         }
}

A.Base method

B.Child methodB

C.Base method Child MethodB

D.编译错误

选D,因为他调用了子类中父类没有的方法。

猜你喜欢

转载自blog.csdn.net/weixin_44420328/article/details/107105593