zoukankan      html  css  js  c++  java
  • 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
    知识共享,欢迎转载。
  • 相关阅读:
    使 Asp.net Core Hosting Bundle 立即生效
    Hosted Services require keep alive
    VS 高级保存选项,解决文件内容编码问题
    asp.net core localhost https 证书
    阿里云K8S下玩.NET CORE 3.1
    cmd 域名生效检测
    c# 通过win32 api 得到指定Console application Content
    .net framework msbuild环境搭建 (不装vs)
    Python常用模块——目录
    Python——爬虫进阶
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/6616296.html
Copyright © 2011-2022 走看看