面向对象三大特征之继承

106 阅读2分钟
  1. 继承(extends)

作用:

  1. 代码复用,更加容易实现类的拓展
  2. 方便建模
package com.itbaizhan.oop;
/**
*测试继承
*/
public class Testextends{
    public static void main(String[] args){
        Student = new Student("王誉"174,major"java");
    }
}

class Person{
    string name;
    int height;
    public void rest(){
        System.out.println("休息!");
       
    }
}

class Student{
    String name;
    int height;
    String major;//专业
    
    public void study(){
        System.out.println("学习!");
        rest;
        System.out.println(this.name)
        
    }
    
        public Student(String name,int height,String msjor){
            this.name = name;
            this.height = height;
            this.major = major;       
        }
}

class boy extends Person{
    …………
}

instanceof运算符

public class Test{
    public sttic void main(String[] args){
        Student s = new Student("王誉"174"java");
        System.out.println(s instanceof Person);
        System.out.println(s instanceof Student);
    
    
    }
 }

知识点:

  1. 父类也称作超类、基类。子类:派生类等。
  2. java中只有单继承,没有像c++那样的多继承。多继承会引起混乱,使得继承链过于复杂,系统难于维护
  3. Java中没有多继承,接口有多继承。
  4. 子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如,父类私有的属性和方法。)
  5. 如果定于一个类时,没有调用extends,则是他的父类是:java.lang.Object.

方法重写(override)

override(重写)oveload(重载)毫无关系

  • 子类重写父类的方法,可以用自身行为替代父类行为。重写是实现多态的必要条件。

-重写的要点:

  1. “= =” :方法名、形参列表相同。
  2. “≤”:返回值类型和声明异常相同。
  3. “≥”:访问权限,子类大于等于父类。(分装)

例子:

package com.itbaizhan.oop;

/**测试方法的重写*/
public class Testoverride{
    public static void main(String[] args){
    Horse h = new Horse();
    Plane p = new Plane();//赋值
    h.run();
    h.getVehicle();
    p.run();//调用plane自己的run方法
    }
}

class Vehicle {     //交通工具类
    public void run(){
        System.out.println("跑……")
    }
    
    public Vehicle getVehicle(){  
       System.out.println("给你一个交通工具!")
        return null;//返回一个空
    }
    
}
class Horse extends Vehicle {  //马也是交通工具,extends继承
    @Override   //同写了父类的方法,在这里也有覆盖的含义,也是重写的含义
    public void run(){
        System.out.println{("得得得……");}
        
    @Override
    public Horse getVehicle(){
        return new Horse();
        }
    }
}

class Plane extends Vehicle {//plane飞机
    public void run(){
        System.out.println("天上飞……")
    }
}

final关键字

作用:

  • 修饰变量:被他修饰的变量不可改变,一旦赋了初值,就不能被重新赋值。 fianal int MAX_SPEED = 120;
  • 修饰方法:该方法不可被子类重写。但是可以被重载! final void study(){}
  • 修饰类:修饰的类不能被继承。比如:MAX、Math、Sting等。 final classA{}

注意:重载发生在本类,重写发生在父类与子类之间

重载的方法名必须相同,重写的方法名相同且返回值类型必须相同;

重载的参数列表不同,重写的参数列表必须相同

…………未完待续