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进行继承,但其中的抽象方法不能被具体实现。

  • 相关阅读:
    centos 7 安装tomcat
    centos 7 安装jdk1.8
    centos 7 安装MySql
    java项目异常监控_JAVA项目中的常用的异常处理情况总结
    Cron表达式
    JAVA编写的预警系统
    Spring 的 Controller 是单例还是多例?怎么保证并发的安全!
    字符串0.00000--》0E-8
    按月份统计数据
    SQL 添字段,修改辽段属性,或备注
  • 原文地址:https://www.cnblogs.com/exciting/p/6532538.html
Copyright © 2011-2022 走看看