封装
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; } }
继承
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 任何地方都可以访问,能继承到子类;
访问权限范围: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
重写
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.抛出异常范围可以被缩小,但不能扩大。
多态
注意事项:
- 多态是静态方法的多态
- 父类子类之间有关系
- 存在条件:继承关系、方法需要重写、父类引用指向子类对象 father f1 = new son();
- static、final、private修饰符的方法不能重写