zoukankan      html  css  js  c++  java
  • 多态小结

    多态的总结,把几个知识点一起总结了:

    1.继承

    2.接口

    3.重写

    4.多态

    5.一些相关知识点

    可能不够全面仔细,将来对java学习更深入以后,再进行更新


    1.继承

    语法:class Dog extends Animal(){}

    子类 extends父类

    * 在方法里的第一行使用super()可以调用父类的无参构造方法

    * 继承:多个类拥有共同的属性和方法,将共有的东西提出来,让多个类去继承这个父类

    * 我们就可以获取到父类公有属性和方法(不能继承构造方法)

    * 优点:提高代码复用性,方便管理和维护,

    * 特点:子类可以直接访问父类的公有属性和方法,子类可以拥有自己的属性和方法

    * 当父类的方法不能满足我们的需求,我们可以使用重写

    * 继承中成员变量的特点?

    * 子类只能获取父类的非私有属性,若子类父类中的名字相同,获取子类的成员变量

    继承的一个简单例子:

    class Animal{
        public void eat(){
            System.out.println("--吃--");
        }
    }
    
    class Cat extends Animal{
        
        @Override
        public void eat(){//重写父类方法
            System.out.println("--猫在吃--");
        }
        
        public void run(){
            System.out.println("--猫在爬树--");
        }
    }

    2.接口

    语法:class Dog implements Animal(){}

    格式:interface 接口名{}

    出现的理由:java是单层继承,有时候就不能准确满足我们的需求,java为我们提供了一种机制,接口打破了单一继承的局限性,接口多实现

    接口多实现 implements

    接口成员特点:

    ①只能是常量,哪怕不在前面写final,也会默认为final,不赋值会报错。

    ②只能有抽象方法,并且是公有的,默认使用public abstract 修饰方法

    ③不能有构造方法,不能有方法体。

    ④一个类实现接口时,必须实现接口的所有方法

    如果一个类既要用到继承又要用到接口格式:  类名 extends 父类名 implement 接口名 {}

    接口能继承接口吗?能,不需要实现父接口的方法

    接口能实现接口吗?不能,接口里不能实现任何方法

    接口里能有main函数吗?可以,需要jdk1.8以上

    接口的一个简单例子:

     public class Interfaces {
        
        public static void main(String[] args) {
            Person p = new Person();
            System.out.println(p.name);
            p.code();
            p.manager();
        }
    }
    interface Boss {
        public void manager(); //抽象方法
    }
    
    interface Programer{
        public void code() ;
    }
    
    class Person implements Programer,Boss{
        String name="乔布斯";
    
        @Override
        public void manager() {
            System.out.println("管理公司");
        }
    
        @Override
        public void code() {
            System.out.println("敲代码!");
        }
    }

    3.重写

    ①类实现接口时,对接口方法进行重写(实现)

    ②子类为了满足自己的需求,重写父类的方法,要求除访问权限外,其他东西(参数、方法名等)都需要与父类相同


    4.多态

    前提:继承关系,子类和父类有指向关系。(接口是特殊的继承)

    格式:

    父类的引用指向子类对象(父类想用子类对象,就new子类类型)(向上转型)

    父类类型 名称 = new 子类类型();

     向下转型:

    子类类型 名称 = (强转类型) new 父类类型();

    多态的使用例子:

            //正常的使用
            Cat c = new Cat();
            c.eat();//输出 猫在吃  如果没有重写eat方法,那么此处输出的是 吃
            Animal a = new Animal();
            a.eat();//输出 吃
            
            
            //父类引用子类
            Animal c = new Cat();
            c.eat();//可以用,输出的是 猫在吃
            c.run();//报错,因为在父类Animal中没有run方法
            
            
            //子类引用父类
            Cat c = (Cat) new Animal();
            //写出来不会报错,但是一旦编译就会抛出
            //java.lang.ClassCastException: com.inclass.test.Animal cannot be cast to com.inclass.test.Cat异常
            

    5.一些相关知识点

    * 多态的单个前提(缺一不可)

    * 子类父类的继承关系

    * 方法重写(如果子类的方法没用重写,就不存在多态)

    * 父类引用指向子类对象

    * 动态绑定:运行期间调用的方法,是根据我们具体的类型

    *

    * 多态成员的特点:

    * 成员变量:编译时看左边,运行时看 左 边

    * 成员方法:编译时看左边,运行时看 右 边

    * 静态方法:编译时看左边,运行时看 左 边

    *

    * 多态的优缺点:

    * 优点:可以提高可维护性,提高代码的可扩展

    * 缺点:无法直接访问子类的特有成员

    * 抽象类和接口的区别

    * 共性:不断的抽取出共有的方法为抽象方法

    * 不能被实例化

    * 区别:抽象类里可以有普通方法,也可以有成员变量。

    * 接口只能是常量和抽象方法

    * 抽象类单层继承,接口多实现

    * 抽象类里有构造方法,接口没有

  • 相关阅读:
    Photoshop 基础七 位图 矢量图 栅格化
    Photoshop 基础六 图层
    Warfare And Logistics UVALive
    Walk Through the Forest UVA
    Airport Express UVA
    Guess UVALive
    Play on Words UVA
    The Necklace UVA
    Food Delivery ZOJ
    Brackets Sequence POJ
  • 原文地址:https://www.cnblogs.com/bkytep/p/9614007.html
Copyright © 2011-2022 走看看