public void buyu()//方法是共有的,你当然可以继承了 { System.out.println("我会捕鱼!!!,我是渔夫"); } }class Son extends Father { public Son(double money) { super( money); } void speakEnglish()//你自己上学时候好好学习学会的 { System.out.println("我会英语!!!我六级成绩考了556啊!!!哈哈") ; } } public class Test{ public static void main(String[] args) { Son lixinhai123456 = new Son(1000000);// lixinhai123456.speakEnglish(); lixinhai123456.buyu();//你爸爸小时候教你捕鱼了,你当然会了 //这里你没有直接声明钱(money)吧,但是你有没有钱呢? System.out.println("我爸爸年轻时候挣得钱,现在留给我了,但是不会乱花的,一共是:"+lixinhai123456.money) ;//看到了吧,你爸爸挣了好多钱,你当然可以用了
{
double money =100000000;//你爸爸拥有很多的money,多少?¥1000000000000.好羡慕啊
private void gengdi()//看到没有,方法是私有的,意味着你不会继承这个方法,你爸爸小时候没教你耕地,哎,不希望你做农民啊!
{
System.out.println("我会耕地!!!,我是农民伯伯");
}
public void buyu()
{
System.out.println("我会捕鱼!!!,我是渔夫");
}
}class Son extends Father
{ void speakEnglish()
{
System.out.println("我会英语!!!我六级成绩考了556啊!!!哈哈") ;//你自己上学时候好好学习学会的
}
}
public class Test{
public static void main(String[] args)
{
Son lixinhai123456 = new Son();//
lixinhai123456.speakEnglish();
lixinhai123456.buyu();//你爸爸小时候教你捕鱼了,你当然会了
System.out.println(lixinhai123456.money) ;//看到了吧,你爸爸挣了好多钱,你当然可以用了
}
}随便写了一下,希望你可以理解,其实没什么,就是继承中类的变量或者是方法权限问题!执行结果
我会英语!!!我六级成绩考了556啊!!!哈哈
我会捕鱼!!!,我是渔夫
1.0E8
{
double money ;//你爸爸拥有很多的money,多少?¥1000000000000.好羡慕啊
public Father(double money)
{
this.money = money ;
}
private void gengdi()//看到没有,方法是私有的,意味着你不会继承这个方法,你爸爸小时候没教你耕地,哎,不希望你做农民啊!
{
System.out.println("我会耕地!!!,我是农民伯伯");
}
public void buyu()//方法是共有的,你当然可以继承了
{
System.out.println("我会捕鱼!!!,我是渔夫");
}
}class Son extends Father
{
public Son(double money)
{
super( money);
} void speakEnglish()//你自己上学时候好好学习学会的
{
System.out.println("我会英语!!!我六级成绩考了556啊!!!哈哈") ;
}
}
public class Test{
public static void main(String[] args)
{
Son lixinhai123456 = new Son(1000000);//
lixinhai123456.speakEnglish();
lixinhai123456.buyu();//你爸爸小时候教你捕鱼了,你当然会了
//这里你没有直接声明钱(money)吧,但是你有没有钱呢?
System.out.println("我爸爸年轻时候挣得钱,现在留给我了,但是不会乱花的,一共是:"+lixinhai123456.money) ;//看到了吧,你爸爸挣了好多钱,你当然可以用了
//当你调用你爸爸的耕地这个方法时候,就会出错,为什么呢?你小时候就没学会耕地(你爸爸的耕地方法是私有的)
lixinhai123456.gengdi();//错误的调用方法!!}
}
Father 父类 (这里用接口也可以)
sonSan 子类1
sonEr 子类2public Father getSon(String sonName){
Father f=null;
if(sonName.equals("张三"){
f=new sonSan();
}else if(sonName.equals("张二"){
f=new sonEr();
}
return f;
}
public void a(){
System.out.println("a");
}
public void b(){
System.out.println("b");
}
}class SubA extends A{
public void a(){
System.out.println("SubA");
}
}在实际运行时,JVM所理解的SubA对象是这样的(默认的Object类的方法我就省略了):class SubA extends A{
public void a(){
System.out.println("SubA");
}
public void b(){
System.out.println("b");
}
}其中方法b就是继承的A中的b方法,而方法a还是SubA类自己定义的。另外,你需要理解声明和赋值的含义,即
A ins = new SubA()声明的是A对象,但是给它赋的值是一个SubA,所以调用这里的ins.a()方法会调用SubA中的方法,这也就是多态的含义。