• Java学习之继承


    继承概述:Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的技术,新类的定义可以增加新的数据或新的功能,也可以使用父类的功能,但不能选择性的继承父类。Java不支持多重继承,单继承使Java的继承关系很简单,一个类只能有一个父类,易于管理程序,同时一个类可以实现多个接口,从而克服单继承的缺点。在面向对象的程序设计中继承是不可或缺的的一部分。通过继承可以快速创建新的类,实现代码的重用,提高程序的可维护性,节省大量创建类的时间,提高开发效率和开发质量。
    继承思想很简单,在生活中表现为包含关系(就如电脑包括笔记本电脑,台式机电脑和平板电脑等等)但功能很强大,可以重用已经存在的类的字段和方法,提高了代码的重用性和程序的扩展性,继承所表达的是一种对象之间的相交关系,他使某类对象可以继承另一类对象的数据成员和成员方法,被继承的类叫做基类,父类或超类(object类),继承的类叫做派生类或子类,这样一来清晰的表达了每一项共同特征所适应的概念范围。
    继承类的语法格式:
    public class 类名(子类,派生类)extends 类名(父类,基类,超类) { }
    除了object类没有父类以外,其他没个类都有一个并且只有一个直接的父类,称为Java的单继承。
    需要注意的是构造方法不会被子类继承(所有属性和所有普通方法都被继承),但可以从子类中调用父类的构造方法,且在Java中子类继承父类后,总类必须要调用父类中的某一个构造方法,因为构造方法是用来实例化该类的对象的。

    public class People{
    //定义两个私有字段,代表People对象的两个属性
    private String name
     int age;
    //定义一个带参的构造方法,用来初始化字段
    public People(String name,int age){
    this.name=name;
    this.age=age;
    }
    //如果属性的访问修饰符不是public,则必须要给属性提供public的get和set方法
    public String  getName(){            //获得name属性的值
    return name;
    }
    public void setName(String name){       //设置属性name的值
    this.name=name;
    }
    public float getAge(){
    return age;
    }
    public void setAge(int age){
    this.age=age;
    }
    public class Man extends People{
    //Man子类中增加一个字段,代表性别
    public String sex;
    //Man子类有一个构造方法
    public Man (String name, int age,String sex){
    super(name,age);        //调用父类的构造方法
    thisl.sex=sex;               //初始化子类中新增加的属性
    }
    //Man类中增加一个方法
    public void eat(){
    system.out.println("吃饭")
    }}
    

    补充:Java中继承不存在循环继承
    &&访问修饰符的使用范围:
    访问修饰符 同类中 同包不同类中 不同包中 不同包但是有继承关系的子类中
    private 可以 不可以 不可以 不可以
    默认的 可以 可以 不可以 不可以
    protected 可以 可以 不可以 可以
    public 可以 可以 可以 可以
    继承的优点:1.继承过来的字段可以向其他字段一样被直接使用。2.在子类中可以声明一个与父类中同名的新的字段,从而隐藏父类中的字段(不推荐使用)。3.可以在子类中声明一个父类中没有的新的字段和新的方法。4.从父类继承过来的方法可以直接使用。5.可以在子类中编写一个调用父类构造方法的子类构造方法,既可以隐式的实现,也可以通过关键字super来实现。
    重写和隐藏父类方法:
    子类继承了父类中的所有成员及方法,在某些情况下,子类中该方法所表示的行为与其父类中所表示的行为不完全相同,例如:在父类动物中定义了跑这个方法,而在子类中跑的方法是不同的。
    重写的条件:1.必须要存在继承关系;
    2.子类在重写方式时,子类方法的访问修饰符要大于或者等于父类方法的访问修饰符;
    3.子类在重写方式时,子类方法的返回值类型,方法名,参数都必须要和父类的一致;
    4.子类方法的具体实现要和父类的不同。
    调用重写的方法,根据new关键字后的类名来决定,如果类名是子类,则优先调用子类的方法,如果子类中不存在,才会调用父类中的方法。

    class A {
    public void sayHello( ){
    system.out.println("Hello,everyone!");
    }
    public void sayBye( ){
    system.out.println("Goodbye,everyone!");
    }
    class B extends A{
    public void sayHello( ){
    system.out.println("大家好!");
    }
    public class Test1{
    public static void main (String [ ] args){
    B b=new B;
    b.sayHello();
    b.sayBye();
    }}
    
    让对手感动,让对手恐惧
  • 相关阅读:
    自定义udf添加一列
    spark执行命令 监控执行命令
    R链接hive/oracle/mysql
    [Hive_6] Hive 的内置函数应用
    [Hive_add_6] Hive 实现 Word Count
    [Hive_add_5] Hive 的 join 操作
    【爬坑】远程连接 MySQL 失败
    [Hive_add_4] Hive 命令行客户端 Beeline 的使用
    [Hive_5] Hive 的 JDBC 编程
    [Hive_add_3] Hive 进行简单数据处理
  • 原文地址:https://www.cnblogs.com/RokoBasilisk/p/11780387.html
Copyright © 2020-2023  润新知