JAVA Day16

封装

JAVA Day16_JAVA

package oop;
class Person {
   private String name;
   private int age;

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

   public int getAge() {
      return age;
   }

   public void setAge(int age) {
      this.age = age;
   }
}

继承

JAVA Day16_JAVA_02

ps:快捷键:ctrl+H查看继承树形图

class Student extends Person{
     private int ID;

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }
}

权限修饰符

private 本类内部可以访问,不能继承到子类;

default 本类内部可以访问,同包其他类可以访问,同包可继承;

protected 本类内部可以访问,不同包的子类也可以访问,同包其他类也可以访问,能继承到子类;

public 任何地方都可以访问,能继承到子类;

JAVA Day16_JAVA_03

访问权限范围:public>protected>default(默认)>private

package oop;
class Person {
   protected String name = "Leo";
}
class Student extends Person{
    public String name = "HaoNan";
    public void test(String name){
        System.out.println(name);
        System.out.println(this.name);
        System.out.println(super.name);
    }
}
public class demo01 {
    public static void main(String[] args) {
        Student student = new Student();
        //当new一个student对象时,调用了student构造器,而student构造器又调用了Person的构造器。在调用父类的构造器时,调用代码必须要在子类构造器的第一行。
        student.test("LeoDong");
    }

}
// 输出结果为:LeoDong HaoNan Leo

JAVA Day16_JAVA_04

重写

package oop;
public class Demo02 {
    public void main(String[] args) {
        A a = new A();
        a.test();
        B b = new A();
        b.test();
    }
}
class A extends B{
    public static void test(){
        System.out.println("A=>test");
    }
}

class B {
    public void test() {
        System.out.println("B=>test");
    }
}
//运行结果:"A=>test" "A=>test"
//注意:
		1.重写只限于非静态方法。
        2.方法名、参数列表必须相同。
        3.修饰符范围可以扩大,但是不能缩小。
        4.抛出异常范围可以被缩小,但不能扩大。

多态

JAVA Day16_JAVA_05

注意事项:

  1. 多态是静态方法的多态
  2. 父类子类之间有关系
  3. 存在条件:继承关系、方法需要重写、父类引用指向子类对象 father f1 = new son();
  4. static、final、private修饰符的方法不能重写