javaSE-封装、继承、方法重写(方法覆盖)

一、方法重载Overload 和 方法重写Override 区别:

Overload方法重载发生在同一个类中,方法名类名相同,参数列表不同(参数的:类型、顺序、个数,只要有一个不一样就是参数列表不同)。

Override:方法重写是发生在具有继承关系的父子类之间的,重写之后方法和之前的的方法一致:方法名,参数列表,返回值类型,三个都需要一致

二、封装:

  1. 属性私有化(使用private  关键字进行修饰)
  2. 对外提供简单的操作入口(get读入、set写出)
  3. set方法和get方法要满足以下格式。
  4. set和get方法都是实例方法,不能带static。不带static的方法称为实例方法,实例方法的调用必须先new对象
  • public  返回值类型  get+属性名首字母大写(无参){
  •          return 属性名;
  •       }
  • public void set+属性名首字母大写(有1个参数){
  •        this.属性名 =属性名;
  •      }

三、继承:extends

  • 继承最重要的作用是:有了继承才有了方法覆盖和多态。任何一个类,没有显示继承任何类,默认继承: Object
  1. 继承的特性:
  • B类继承A类,则称A类为超类(superclass)、父类、基类,B类则称为子类(subclass)、派生类、扩展类。
  • java中的继承只支持单继承,不支持多继承
  • 虽然java中不支持多继承,但有的时候会产生间接继承的效果,例如:class C extends B,class B extends A,也就是说,C直接继承B,其实C还间接继承A。
  • java中规定,子类继承父类,除构造方法和被private修饰的数据不能继承外,剩下都可以继承。
  • java中的类没有显示的继承任何类,则默认继承Object类,Object类是java语言提供的根类(老祖宗类),也就是说,一个对象与生俱来就有Object类型中所有的特征。

四、方法重写(覆盖):override

  • override:父类的方法无法满足当前子类的业务需求时,子类有必要进行“方法重写”。
  • 两个类必须要有继承关系。
  • 重写之后的方法和之前的方法具有: 相同的返回值类型、方法名、形式参数列表(顺序,个数,类型)。
  • 子类访问修饰符的级别,不低于父类同名方法的访问修饰符的级别,访问权限不能更低,可以更高。
  • 当子类对父类继承过来的方法进行“方法重写”之后,子类对象调用该方法的时候,一定执行方法重写之后的方法。
  • 方法覆盖只是针对于方法,和属性无关。
  • 私有方法无法覆盖。构造方法不能被继承,所以构造方法也不能被覆盖。方法覆盖只是针对于“实例方法”,“静态方法覆盖”没有意义。
  • 方法重写override例子:
public class People {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void speakHi(){
        System.out.println(this.name + "和别人打招呼!");
    }
}
public class ChinaPeople extends People {
    public void speakHi(){
        System.out.println("你好,我叫"+this.getName()+",很高兴认识你!");
    }
}
public class AmericaPeople extends People {
    public void speakHi(){
        System.out.println("Hi,My name is "+this.getName()+",Nice to meet you!");
    }
}
public class PeopleTest {
    public static void main(String[] args) {
        ChinaPeople cp = new ChinaPeople();
        cp.setName("张三");
        cp.speakHi();
        AmericaPeople ap = new AmericaPeople();
        ap.setName("jackson");
        ap.speakHi();
    }
}

 

posted @ 2022-04-11 09:31  280887072  阅读(53)  评论(0编辑  收藏  举报