java课堂笔记7

二、重写(覆盖)原则 1.相同的方法名,参数列表、返回类型 2.访问权限不能更小3.抛出异常不能更大 4.方法的重写只能发生在父子之间,同一个类里方法只能重载 5.父类的静态方法不能被子类覆盖为非静态的方法 6.子类可以定义与父类静态方法同名的静态方法,以便在子类中隐藏父类的静态方法 7.父类的非静态方法不能被子类覆盖为静态的方法 8.父类的私有方法不能被子类覆盖,因为父类的私有方法不能被子类继承。所以不存在   覆盖的概念 静态的方法调用的时候与引用类型绑定。普通非静态的方法调用的时候与对象类型绑定 =============================================================================== 三、多态 polymorphism 一个名字多种形态 1、基本类型的多态2、方法多态3、类(接口)多态4、参数的多态(1+3) 发生类多态的情况: 父类的指针指向子类的时候会发生类多态 Person p = new Student();类多态 类多态:父类变量指向子类对象,发生了类多态,此时: 1.只能使用父类中定义的属性/方法,子类中扩展的属性和方法存在,但是不能直接使用子           类中定义的,除非进行类型转换 2.如果调用重写的方法,实际调用的是子类的重写后的方法,覆盖掉了父类中的非静态的该 方法 3.如果没有继承,就没有重写,如果在父类中把方法设为 private ,那showName()方法就 不能重写,也就会报错,如果想要使用子类的showName()方法,可以把   @Override 去掉,使子类中的showName()成为一个新方法 public static void main(String[] args) {   Person p = new Teacher();//类多态   //发生多态时就是把子类对象当父类来用   p.setAge(23);//调用的   p.setName("yang");//该方法是被重写后的。她调用的是子类的   //p.setId(1);这里的方法是子类扩展的。发生多态时是不能用的   //多态就是把对象看成两种状态 // 编译是父类,运行时是子类   Teacher t=new Teacher();   t.setId(1);//这里是合法的,因为没有发生多态  } 引用类型的类型转换:(本质上是一种还原操作) 引用类型指的是等号前面声明的类型 格式:(类名) 变量名 例子:Animal  animal=new Dog();          Dog  d=(Dog)animal; 转换的条件: 1.发生在父类与子类之间 2.曾经发生多态 3.由父类向子类转(向下转) public static void main(String[] args) {   Person p = new Teacher();//类多态   //发生多态时就是把子类对象当父类来用   p.setName("yang");//该方法是被重写后的。她调用的是子类的   //p.setId(1);这里的方法是子类扩展的。发生多态时是不能用的   if(p instanceof Teacher){   Teacher t1=(Teacher)p;   t1.setId(1);//强制类型转换后就可以调用了   t1.getAge();   }  } instanceof 用来判断类型,他是向父类兼容的。无法用于确定对象的确切类型 例如:(t instanceof Person)=true instanceof 判断的是它指向的类型,如上例子所示 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值