• 面向对象--继承


    为什么使用继承?继承的本质?

    1、继承的本质在于抽象,类是对对象的抽象,继承是对某一批类的抽象。

    2.为了提高代码的复用性

    extends是扩展的意思,子类是父类的扩展

    例如:动物--分 哺乳动物 爬行动物 ----哺乳动物分为人等,

    继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模

    实现继承:

    使用extends关键字。

    public class Test{

    class Animal{

    String eyse="眼睛";

    String name="名字";

    public void set(){

    System.out,println("吃东西");

    }

    }

    class Mammal extends Animal{

    public void puru(){

    System.out.println("动物吃食物");

    }

    }

    public static void main(String[] args){

    Mammal m1=new Mammal();

    m1.puru();

    m1.set;

    }

    }

    继承的要点

    子类继承父类,可以得到父类的全部属性和方法(除了父类的构造函数)

    java中只有单继承,意味一个类只有一个直接父类。

    Java中的多继承可以使用接口实现。

    如果定义一个类,没有使用extends关键字,那么它的父类是java.lang.Object

    不同的称呼:超类,父类,基类,派生类

    父类方法的重写:

    “==”;方法名,形参列表相同。

    "<<":返回值类型和异常类型,子类小于父类

    ">":访问权限,子类大于等于父类

    子类继承父类的一切。实例化一个类是从最顶级的超类开始实例化,一层一层包裹结构。

    构造方法的调用:

    根据super关键字,构造方法第一季总是super调用父类对应的构造方法。

    Object类

    Object是所有Java类的根基类

    如果在类的声明未使用extends关键字指明父类,则默认是Object类

    toString方法

    Object类中定义在public toString()方法,其返回值是String类型,描述当前对象的有关信息。

    在进行String与其他类型数据的链接操作时,调用该对象的toString方法

    可以根据需要在自定义类型中重写toString方法。

    equals方法

    Object类中定义:

    提供对象是否相等的逻辑

    Object的equals方法定义为x.equals(y),当x的内容等于y时返回为true、

    示例:

    public class Test{

    class Person(){

    int id;//局部变量

    String name;

    int age;

    public Person(){};//无参

    public Person(int id,String name,int age){

    this.id=id;//this区分成员变量和局部变量

    this.name=name;

    this.age=age;

    }

    public boolean equals(Object obj){

    if(obj==null){

    return false;

    }else{

    if(obj instanceof Person){

    Person c=(Person)obj;

    if(c.id==this.id){

    return true;

    }

    }

    }

    public static void main(String [] args){

    Person p=new Person(123,"aa",3);

    Person p1=new Person(123,"bb",4);

    System.out.println(p1==p);//false

    System.out.println(p.equals(p1));//ture

    }

    }

    super关键字

    super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。

    public class Test {
     public static void main(String[] args) {
      new ChildClass().f();
     }
    }
    class FatherClass {
        public int value;
        public void f(){
            value = 100;
            System.out.println
            ("FatherClass.value="+value);
        }
    }
    class ChildClass extends FatherClass {
        public int value;
        public void f() {
            super.f();  
            value = 200;
            System.out.println
                 ("ChildClass.value="+value);
            System.out.println(value);
            System.out.println(super.value);
        }
    }

    方法的重写(override)

    崽子类中可以根据需要对父类中继承的方法进行重写

    重写的方法必须和被重写的方法具有相同方法名,形参列表和返回类型。

    重写方法不能使用比被重写方法更严格的访问权限

    public class Test{

    public static void main(String []args){

    Animal animal=new Animal();

    animal.shot();

    Dog dog=new Dog();

    dog.shot();

    }

    }

    class Animal{

    void shot(){

    System.out.println("声音");

    }

    }

    class Dog extends Animal{

    void shot(){

    System.out.println("喵喵喵");

    }

    }

  • 相关阅读:
    Vue
    前端笔试、面试题
    npm下载文件临时目录、实际存放目录路劲
    ES6
    Electron – 基础学习(3): 项目打包成exe桌面应用 之electron-builder
    Electron+Vue – 基础学习(2): 项目打包成exe桌面应用
    Electron+Vue – 基础学习(1): 创建项目
    软件需求膨胀系数
    职业女性确实处于劣势吗?记一次不甚严谨的考据 -- 向胡适之先生的遥远致敬
    15篇干货博客 38本书 4门公开课 减掉20斤体重 我的2014总结
  • 原文地址:https://www.cnblogs.com/javatask/p/6753104.html
Copyright © 2020-2023  润新知