父类变量与子类对象之谈

前言

class Outer{
public void show(){}
}
class Inner extends Outer{
public void show(){}
}

Outer out = new Inner();大家都懂 这肯定是合法的,因为 Inner 类 是 Outer的子类嘛。所以Outer 的引用变量可以指向 子类Inner对象的地址嘛。为什么要这样做呢?有什么意义?

引入

接下来再看一段代码

class Outer1{
void method(){}
}
class Demo{
public static void main(String[] args){
new Outer1(){
public void method1(){}
}.method();//编译通过;子类对象自定义了一个自己的方法并运行。
Inter Outer1= new Outer1(){
public void method1(){}
}
inter.method();//编译失败,因为父类引用指向子类对象,只能调用子类中通过覆写的方法

}
}

向下转型

如果我们想要子继承父类,又要拓展自己的东西,还要使用父类引用那我们(后面我们会说为什么要使用父类引用)该怎么办?
上一段代码我们使用的是匿名内部类(为什么叫内部呢,是因为类的描述在类里)
如果是使用匿名内部类 将无法为对象向下转型。

class Outer{
}
class Inner extends Outer{
public void method1(){}
}
class Demo{
public void static main(String[] args){
Outer outer = new Inner();//其实这段和上面那段匿名内部类作用相同
Inner inner = (Inner)outer;//强转
inner.method();//这样讲编译通过。
}
}

封装性的问题

abstract class ball {
int r ;
int color’
public abstract void show();
}
class Outer{
private class Basketball extends ball{
public void show (){
System.out.println(“Basketball “);
}
}
//因为封装性,所以都 private
public Basketball newBasketball (){
return new Basketball ();
}
}
class DemoMain{
public static void main(String [] args){
Outer outer = new Outer();
//Basketball basket = outer.newBasketball();
//因为封装性。所以导致我们无法进行调用Basketball
ball basket = outer.newBasketball();

}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值