面向对象编程中有3个非常重要的特征:继承、封装、多态
1.继承
类存在父子关系:子类可以直接获取到父类的成员属性和成员方法。
类的继承只是单继承,一个类只能有一个父类,不能存在多个父类
一个父类可以有多个子类
继承采用extends语法:子类 extends 父类
/**
* 继承
*/
public class Test1 {
public static void main(String[] args) {
Child c = new Child();
System.out.println(c.name);
c.test();
}
}
/**
* 父类
*/
class Parent {
String name = "zhangsan";
void test() {
System.out.println("test");
}
}
/**
* 子类
*/
class Child extends Parent {
}
super和this关键字
class Child extends Parent {
String name = "lisi";
@Override
void test() {
System.out.println(super.name); //zhangsan
System.out.println(this.name); //lisi
System.out.println(name);//jvm虚拟机默认this lisi
}
}
2.多态
所谓的多态,一个对象在不同场景下表现出来的不同状态和形态
多态语法其实就是对对象的场景进行了约束
一个对象可以使用的功能取决于引用变量的类型
/**
* 多态
*/
public class Test2 {
public static void main(String[] args) {
Person p1 = new Person();
p1.testPerson();// test person...
Person p2 = new Boy();
p2.testPerson();
p2.testBoy(); // 调用不了 报错
Person p3 = new Girl();
p3.testPerson();
p3.testGirl(); // 调用不了 报错
Boy b = new Boy();
b.testBoy(); // test boy...
Girl g = new Girl();
g.testGirl(); // test girl...
}
}
class Person {
void testPerson() {
System.out.println("test person...");
}
}
class Boy extends Person {
void testBoy() {
System.out.println("test boy...");
}
}
class Girl extends Person {
void testGirl() {
System.out.println("test girl...");
}
}