• java核心技术----继承


    面向对象编程的三大特征:封装、继承与多态。

    所谓继承就是指人们可以基于已存在的类构造一个新类。继承已存在的类就是复用这些类的方法(method)和数据域(field)。

    在此基础上,可以添加属于子类的新的方法和数据域,以满足新的需求。继承存在明显的“is a”的关系。

    /**
     * Created by N3verL4nd on 2016/11/10.
     */
    
    class Father{
        private String name;
    
        Father(){
            name = "";
        }
        Father(String name){
            this.name = name;
        }
        public String getName() {
            return name;
        }
    }
    
    class Son extends Father{
        private String no;
    
        Son(){
            super();
            no = "";
    
        }
        Son(String name, String no){
            super(name);
            this.no = no;
        }
        public String getNo() {
            return no;
        }
    }
    
    public class HelloWorld {
        public static void main(String[] args) {
            Father father = new Father("father");
            Son son = new Son("son", "10010");
            System.out.println("father: " + father.getName());
            System.out.println("son: " + son.getName() + "  no:" + son.getNo());
        }
    }

    在JAVA中,所有的继承都是公有继承。

    已存在的类叫做:超类、基类或者父类。由父类继承得到的叫做:子类、派生类或者孩子类。

    尽管Father类是一个超类,但是并不是说它拥有比子类更多的功能。相反,子类比超类拥有的功能更加丰富。

    Son类继承了Father的name数据域与getName方法。虽然Son类继承了Father的name属性,但是在Faher类内不能直接访问(private)。

    只有Father类的getName方法才可以访问。如果子类重写了getName方法,而又想访问父类的getName方法,则用super关键字访问。

    super的另一个用途:super()调用父类的构造函数。

    super与this的区别:

    this是一个对象的引用(son.getName()  --> getName(Son this));super只是一个指示编译器调用超类方法的特殊关键字。

    在子类中只可以增加域和方法,不能删除继承来的域和方法。

    由于Son类的构造器不能访问Father类的私有域,所以只能通过调用Father类的构造器对这部分数据进行初始化。可以使用super关键字调用父类的构造函数,而且必须是子类构造器的第一条语句。



    Intellij果然是个牛逼的IDE。

    this的两个作用:

    1、引用隐私参数;2、调用该类的其他构造器。

    super的两个作用:

    1、调用超类的方法;2、调用超类的构造器。

    调用构造器时,两者都必须作为第一条语句出现。

    JAVA不支持多继承。

    在JAVA程序设计语言中,对象变量是多态的。Father变量既可以引用一个Father类对象,

    亦可以引用一个Son类对象。在java中,动态绑定是默认的处理方式。

    子类对象可以赋值给父类变量,但是父类对象不能赋值给子类变量。



    Keep it simple!
    作者:N3verL4nd
    知识共享,欢迎转载。
  • 相关阅读:
    Oracle存储过程
    eclipse使用小技巧
    A.N.T的使用
    Java中JDBC连接数据库(MySQL)
    SQL常用语句例子
    c/s&&b/s区别浅析
    ngRoute+ngAnimate与JQM中的页面跳转的区别
    jQueryMobile与AngularJS的区别
    jQueryMobile--栅格布局
    jQueryMobile--基础
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/6616296.html
Copyright © 2020-2023  润新知