Java的抽象类与接口

        public class JumppingDemo {
            public static void main(String[] args) {
                
                //错误示范
                Jumpping j = new Jumpping();//抽象不能实例化

                Jumpping j = new Cat();//使用实现类对象来实现
                j.jump();//该语句编译看j的左边(Jumpping),执行j的看右边(Cat)
                         //意思是j能不能调用jump方法,看Jumpping类里面是否有junp方法,Cat里是否重写了jump方法,都满足才成功
            }
        }

        //接口的特点
        /*
        使用关键字interface修饰
        public interface 接口名 {}

        类实现接口用**implements**表示
        **public class 类名 implements 接口名{}**

        Cat实现Jumpping接口
       ** public class Cat implements Jumpping{**

        */
        //实现类必须重写接口的方法
            @Override
            public void jump() {
                System.out.println("猫跳了跳");
            }
        }

        /*
        接口不能实例化
        通过**实现类对象实例化,这叫接口多态**

        多态的前提
        有继承或实现关系;有方法重写;有父(类/接口)引用指向(子/实现)类对象
        */


        /*
        接口成员的特点
        **接口里的成员变量默认被final修饰,不可更改,也默认被static修饰,可以通过"接口名.成员名"的方式调用**
        public static final int num = 3;
        int num = 3;//二者无异
        接口是没有构造方法的
        接口成员方法默认是抽象方法 public abstract ...
        */

        public interface Jumpping {
            **public abstract** void jump();
        }

        /*
        抽象类与接口
        **抽象类是对事物的抽象,接口是对行为的抽象**
        */

        Jumpping j  = new Dog();
        j.jump();
        //接口多态只能调用接口里有的方法
	   //Jumpping接口里有jump抽象方法,Dog类implements Jumpping接口且重写了jump方法

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

        Animal a = new Dog();
		//Animal类里有eat方法,Dog继承(extends)了Animal,即父类引用指向子类
        a.setAge(5);
        a.setName("来福");//常规构造方法,IDEA里的快捷键为alt+insert(如果insert与F12在一起,快捷键加上Fn)
        System.out.println(a.getName()+","+a.getAge());
        a.eat();
        System.out.println("---");//抽象类多态同样只能调用(父类)Animal里有的方法
		

		//Dog  extends  Animal implement Jumpping,同时拥有该类和接口里的方法
		//注意:Dog类里必须重写了Animal和Jumpping的方法
        Dog c = new Dog();
        c.setName("来福");
        c.setAge(6);
        System.out.println(a.getName()+","+a.getAge());
        c.eat();//来自Animal类
        c.jump();//来自Jumpping接口
        //以上实例化的对象调用方法都是有限的,只有Dog类里能调用的方法最多,遂采用以上方式



个人学习记录,不一定完全没错误。如果发现有需要改正的地方,欢迎指正噢。

posted @ 2021-03-30 22:08  x_xian  阅读(56)  评论(0)    收藏  举报