zoukankan      html  css  js  c++  java
  • 继承与多态

    1.继承的使用

       class 子类名 extends 父类名{

         类体

      }

       java支持单继承,即只能有一个父类,但类之间的继承可以具有传递性。

       子类可以通过继承自动获得父类中访问权限为public、protected、default的成员变量和方法,但不能继承权限为private的成员变量和方法。

    2.方法重载和方法覆盖

       方法重载:如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载。

       方法覆盖:如果在子类中定义一个方法,其名称、返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,那么可以说,子类的方法覆盖了父类的方法

    public class People {  
        public String getName() {  
            return "people";  
        }  
      
    }  
    public class Student extends People {  
          
        public String getName() {  
            return "student";  
        }  
          
    }  
    public static void main(String[] args) {  
            People p=new People();  
            System.out.println(p.getName());//运行结果为people  
        
            Student s=new Student();  
            System.out.println(s.getName());//运行结果为student  
        
            People pp=new Student();  
            System.out.println(pp.getName());//运行结果为student  
      
        }  

        student类的getName方法成功覆盖了父类的方法

        如果想在子类中访问父类中国被覆盖的成员,可以使用关键字super来解决这一问题。如super.成员变量 或 super.成员方法。

        当局部变量和类的成员变量同名时,成员变量被隐藏。

        this.day=day;  //this用于表示当前变量,如果没有,左右的day均为局部变量。

       3.对象间的类型转换

          java支持父类和子类对象之间的类型转换,将子类对象抓换为父类时,可进行显式转换或隐式转换,将父类对象转换为子类对象,必须进行显式转换。

          a=(A)b;  //显式转换

          aa=b;     //隐式转换

       4.多态性

          A a=new B();

          等价于下面两个子句:

          B b=new B();

          A a=b;  //隐式类型转换

          这里子类重写了父类的方法,所以调用子类B的方法,不然调用父类A的方法。

       5.抽象类和抽象方法

         关键字abstract修饰的类称为抽象类,抽象类是一种没有完全实现的类。不能用它来实例化任何对象。

         抽象类可以含有抽象的方法,用abstract修饰,除方法体外都有。

       6.接口是抽象类的一种变体,,但它与抽象类又有一些差异,关键字为interface。

          具体不同:

          (1)抽象类中的方法不一定都是抽象的,而接口中的所有方法都是抽象的。

          (2)接口中的所有数据都是公有静态常量,即具有public,static,final属性,但一般不写这些修饰符。

          (3)因为接口中的所有方法都是抽象的,public的,因此必须在实现该接口的子类中重写这些方法。、

          例如:

          interface Myinter{

             double g=9.8;   //public static final double g=9.8; 

             void show();      //public abstract void show();

          }

       

          7.接口实现

          由接口生成子类通过关键字implements来实现一个接口。

          根据上节定义的接口Myinter,可以定义类Test:

          class Test implements Myinetr{

              public void show(){

                   System.out.println("g="+g);

               }

          }

           与类之间的继承关系相似,接口之间也可以通过关键字extends进行继承,但其中的抽象方法不能被具体实现。

  • 相关阅读:
    加入创业公司有什么利弊
    Find Minimum in Rotated Sorted Array II
    Search in Rotated Sorted Array II
    Search in Rotated Sorted Array
    Find Minimum in Rotated Sorted Array
    Remove Duplicates from Sorted Array
    Spiral Matrix
    Spiral Matrix II
    Symmetric Tree
    Rotate Image
  • 原文地址:https://www.cnblogs.com/exciting/p/6532538.html
Copyright © 2011-2022 走看看