package p278;
/**
* @author QinYingjie
* @version 1.0
*/
public class P288 {
public static void main(String[] args)
{
Sub sub = new Sub();
sub.sayOk();
}
}
class Base{
public int n1 = 100;
protected int n2 = 200;
int n3 = 300;
private int n4 = 400;
public int getN4()
{
return n4;
}
public void test100()
{
System.out.println("test100");
}
protected void test200()
{
System.out.println("test200");
}
void test300()
{
System.out.println("test300");
}
private void test400()
{
System.out.println("test400");
}
public void callTest400()
{
test400();
}
// ---------------------------------
}
class Sub extends Base{
public Sub()
{
System.out.println("Sub()...");
}
public void sayOk()
{
// 继承使用细节:
// 1.子类不能访问私有属性 可以访问公共属性
// 2.子类必须调用父类的构造器,完成父类的初始化
// 3.当创建子类对象是,不管使用子类的那个构造器,默认情况下总会去调用父类
// 的无参数构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类
// 的那个构造器完成对父类的初始化工作,否则,编译不会通过。
// 4.如果希望指定去调用父类的某个构造器,则显示的调用一下
// 5.super在使用时,需要放在构造器第一行
// 6.super()和this()都只能房子构造器第一行,因此这两个方法不能共存
// 7.java所有类都是Object类的子类,Object是所有类的基类
// 8.父类构造器的调用不限于直接父类,将一直往上追溯Object类 (顶级父类)
System.out.println(n1+n2+n3);
test100();
test200();
test300();
// 通过提供方法,来访问私有属性和方法
getN4();
callTest400();
}
}