JAVA学习-继承,多态,接口

2132-余同学

发表文章数:10

热门标签

首页 » Java » 正文

感言

学习方法应该有比较大的问题,但是用话更多的时间去弥补!加油,一定可以的!

小节 继承

1、继承的基本含义

抛开一切来说,继承就是在新推出一些功能的时候,需要将之前的代码给再写一遍,调用起来也比较麻烦,这里感觉也是使用到了面向对象的一个思想,将之前用到的代码不给你看,保证了代码的隐私,然后知道那些功能已经实现就可以,extends一下。基类和派生类,可以说“基类是一个大的类别,可以说派生类是一个基类,”然后派生类是存在有自己独特的东西。

小节 多态

1、多态的基本含义

父类引用指向子类对象,按照固定的公式来做,好处就是可以方便去new具体类的对象

2、多态和继承总体汇总

package cn.java.test.demo3;

public class TestMethod {
    public static void main(String[] args) {
        Fu1 fu = new Zi1(); //父类引用调用了 子类对象

        Fu2 fu2 = new Fu2();//Fu2和Zi2是继承关系,然后这里创建的是Fu2 的对象
        Zi2 zi2 = new Zi2();//Fu2和Zi2是继承关系,然后这里创建的是Zi2 的对象

        //首先这里创建的是一个多态,父类引用指向子类对象


        System.out.println(fu.num);//这里的结果是10,这里的变量是调用的父类里面的num

        fu.method();//这里的结果是30,表示这里是先找了子类里面的方法然后该方法直接调用了本类里面的对象


        System.out.println("这里是一个华丽的分割线+++++++++++++++++++++++++++++++++++");


        System.out.println("这里是创建了父类的对象");
        System.out.println(fu2.num);//这里的输入结果是2表示这里是调用了父类的成员变量
        fu2.method();//这里的结果是2表示这里是调用了父类的成员方法

        System.out.println("这里是创建了子类的对象");
        System.out.println(zi2.num);//这里调用了子类的成员变量,这里是使用了子类的成员变量
        zi2.method();//这里调用了子类和父类里面都有的成员方法,这里是使用了子类里面的成员方法

        //最后可以得出在多态或者继承里调用成员变量的规则
        /*
        首先第一个, 直接使用对象名来调用,然后再sout里输出的话,是看左边,是谁的对象就用用谁的成员变量,如果没有就向上去找
        第二个,两个类里面有输出的方法,采 用间接调用的方法,输出的是一个变量,那就要看目前的这个变量是带什么关键字,this是当前类的变量,super是父类的对象
         */

        zi2.methodShow();//调用成员方法的时候看右边,new的谁那就使用谁的方法
        fu2.methodShow();//这里是调用的父类的成员方法,那输出的是父类的
        fu.methodShow();//多态方法的使用,new是new的子类对象的,那么这里使用的就是子类的方法

        /*
        成员变量和成员方法的口诀:
        成员变量:编译看左边,运行还是看左边。
        解释:先看这个对象是什么类型的,比如
        Fu3类和Zi3类中都有一个相同输出的共性类
        但是Fu3类和Zi3类都独自拥有一个独特的类,现在使用多态调用一下这两个类

         */
        Fu3 fu3 = new Zi3();//这里是多态的调用,首先父类引用调用了子类对象

        //这里调用的是成员变量,编译看左边,Fu3里有没有?有,那编译就没有问题,所以可以点出来,运行看左边,Fu3里num是几?是2,那运行结果就是2
        System.out.println(fu3.num);


        //这里调用的是成员方法,左边的Fu3里有没有methodMe方法?有,那编译无问题,所以可以点出来;运行看右边,Zi3里methodMe方法是什么?是B,所以输出是B
        fu3.methodMe();


        //编译看左边,Fu3有没有methodMeFu方法?有,那编译没有问题;运行看右边,Zi3类有没有methodMeFu方法,没有,没有的话则向上寻找父类,父类有,那就可以运行
        fu3.methodMeFu();


        // fu3.methodMeZi();   为什么, 报错,编译过程中,Fu3类中没有methodMeZi方法,则会报红线也没有办法通过对象给点出来







    }
}

具体汇总起来,就是使用重名的成员变量或者成员方法的时候,子类和父类在多态和继承的情况下是如何实现的

小节 接口

1、接口的含义

其实感觉和继承是有点像的,但是里面一般可以存在static方法,default方法,abstract方法,它本身就是抽象类,所以在写完抽象方法之后,可以不在public后面加上abstract关键字

2、接口的注意事项

1.接口的话,本身是不可以创建对象来使用的,只创建一个实现类,一般会在类名的后面加上impl几个英文字母表示implement的缩写,这是某个接口的实现类,然后再创建对象

2.一个实现类可以实现多个接口,每个接口之间使用逗号分割开来

3.接口里面是不可以创建静态代码块的,也不可以创建构造方法,创建的变量一般都是要带上public static final 几个修饰符和关键字的,所有的变量都是为常量,直接使用类名称去调用,变量的名称要大写

4.接口中创建的抽象方法,在实现类里面一定要去覆盖重写,如果没有冲写完,那实现类要更改为抽象类

5.default方法作为在接口中定义的可以拥有方法体的方法,是可以不做重写的

6.接口的实现类也可以继承别的方法,而且继承的方法的重名方法或者变量的使用优先顺序更高

小节 静态代码块补充

1、静态代码块

静态代码块不能写在方法中,只能写在方法体的外面

标签:

未经允许不得转载:作者:2132-余同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《JAVA学习-继承,多态,接口》 发布于2021-10-11

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录