20180312 java java面向对象-子类继承父类的哪些成员
先写父类还是先写子类?
答:不一定,一般地,我们在实际开发工程时,先编写多个自定义的类,写完之后,发现多个类之间存在共同的代码,此时可以抽出一个父类;我们以后做开发,都是基于框架/组件来做的,我们是在别人的基础上继续做开发,即我们定义的类会继承于框架中/组件中提供的父类。
子类继承自父类后,子类可以拥有父类的某一些状态和行为,即子类复用了父类的某些功能和状态。可以通过访问修饰符判断子类继承了父类的哪些功能和状态:
1、若父类中的成员(字段或方法)是以public修饰的,则子类无条件全继承;
2、若父类中的成员(字段或方法)是以protected修饰的,则子类也全继承,即使子类与父类不在同一个包中;
3、若父类和子类在同一个包中,此时子类可以继承父类中缺省修饰的成员。
eg:
//普通的人
class Person extends Object{
String name;
int age;
publi void sleep(){ }
}
//学生
class Student extends Person{
String sn;//学号
}
//引出继承关系
public class ExtendsDemo{
public static void main(String[] args){
Student s = new Student();
System.out.println(s.sn);
System.out.println(s.name);
s.sleep();
}
}
4、若父类中的成员(字段或方法)是以private修饰的,则子类无法继承父类的任何成员,因为private修饰的成员只能在本类中访问;
5、父类中的构造器,子类也无法继承,因为构造器必须和当前的类名相同。