zoukankan      html  css  js  c++  java
  • 面向对象(4)

    如果一个类没有用extends显性的表示继承一个类,那么他就继承Object类,

     

     多态:不同的对象对同一个指令有不同的执行

    存在继承,方法重写,父类引用指向子类对象

    重载:

    在Java中,同一个类中的多个方法可以有相同的方法名称,但是有不同的参数列表,这就称为方法重载(method overloading)。

    参数列表又叫参数签名,包括参数的类型、参数的个数、参数的顺序,只要有一个不同就叫做参数列表不同。

    重载是面向对象的一个基本特性。参数列表:个数,顺序,类型的不同,重载存在由于同类中

    重写存在于子类中,子类对父类的方法进行重写

    向上转型:父类引用指向子类对象

    向下转型:必须先向上转型,再向下转型(强转),当需要调用子类中独有的方法时,父类引用转向子类对象引用,实际上还是转换成子类相对应的子类引用,

    package name.zrm.ooProgram.oop1;
    //一个类如果没有显性的继承一个类那么他相当于继承了Object
    public class Demo extends Object{
    public static void main(String[] args) {
    Object o = new Demo();
    Demo demo = (Demo)o;
    }
    }

    接口:

     

     接口中的变量都是静态常量:

     接口中变量都是public static final修饰的,不添加默认为这个;必须赋初值

    接口中的抽象方法都是public abstract修饰,可以不加,默认都是这个,现在接口中也可以实现方法为默认方法(default)修饰

    package name.zrm.ooProgram.oop1;

    public interface Fly {
    //接口中变量都是静态常量,为public static final修饰,无论加不加都是这个,不加的时候
    //会默认添加,且不能使用其他的方法修饰符
    int X = 10;
    public static final int Y = 10;

    //方法默认为抽象方法,且是public abstract修饰,可以省略不写,但是默认添加
    void method();
    public abstract void method1();

    //接口中现在可以添加实现方法,但是方法为默认方法只能是default修饰,且不能省略
    default void ab(){
    System.out.println(10);
    }

    }

    抽象类:
    package name.zrm.ooProgram.oop1;

    public abstract class Abstact1{
    //抽象类中成员变量可以是任何权限修饰的,与接口不一样
    int age;//default
    private int age1;
    protected int age2;
    public int age3;

    //抽象方法为权限修饰符(除了私有)+abstract修饰,跟接口有不同,且不能省略
    abstract void a();//default
    protected abstract int aa();
    public abstract int m();


    }
    抽象类的抽象方法在被子类实现的时候,权限修饰符权限不能比父类中抽象方法的权限低
    在继承和实现接口的时候,子类必须实现所有的抽象方法,抽象类实现接口的时候可以不用实现接口中的方法
    抽象类中可以有构造方法,接口不能有构造方法,抽象类和接口都不能实例化

     

     

     

     

    内部类:

    package name.zrm.ooProgram.oop1;

    public class Main {
    //内部类
    class M {
    int x;
    int y;

    int method() {
    return 10;
    }
    }

    public static void main(String[] args) {
    //创建内部类对象
    Main.M m = new Main().new M();
    }
    }
    内部类可以访问外部类的私有是属性

     

    package name.zrm.ooProgram.oop1;

    public class Main {
    //内部类
    class M {
    int x;
    int y;
    }

    //匿名内部类
    T t = new T() {
    public int method() {
    return 10;
    }
    };
    //静态内部类
    static class inner{

    }

    public static void main(String[] args) {
    //创建内部类对象
    Main.M m = new Main().new M();
    //创建一个静态内部类
    Main.inner inner = new Main.inner();
    }
    }

  • 相关阅读:
    新版open live writer连接博客园
    github个人博客域名绑定(附带详细原理说明)
    开源性能监控分析工具glowroot
    (转)Python实例手册
    Jetty嵌入式Web容器攻略
    H2数据库攻略
    CAS ticket过期策略
    CAS自定义登录验证方法
    Sonatype Nexus高级配置
    配置sonar、jenkins进行持续审查
  • 原文地址:https://www.cnblogs.com/zrmj/p/11447454.html
Copyright © 2011-2022 走看看