java备考

1. 上转型对象

        1.是什么?  子类的对象赋给了父类对象,例如 Jk_Father j= jk;  其中,j  就是上转型对象 ,上转型之后 ,j  这个对象 不能访问子类中新增的属性和方法,所以它能调用的属性和方法都是父类中原有的,如果子类覆盖或重写了由父类继承下来属性和方法,则调用的是覆盖或重写之后的值,总的来说,上转型的效果相当于 子类对象不能访问自己新增的属性和方法了,其他正常。

 

package test1;

public class Jk extends Jk_Father{

	int workyear=12;
	
	int leval =23;
	
	@Override
	public void work() {
		System.out.println("工作了"+workyear+"年");
		System.out.println(age);
	}
	
	public void playGame() {
		System.out.println("play games ");
	}
	
	public static void main(String[] args) {
		Jk jk = new Jk();
		Jk_Father j= jk;
		j.work();
		j.leval;//不能调用新增的属性和方法和方法
		j.playGame();//不能调用新增的属性和方法和方法
	}
}

 

上转型之后还可以进行下转型,下转型之后就还是子类的对象了,可以访问子类中任何属性和方法

Jk jjkk =(Jk)j;
jjkk.playGame();

但是父类直接下转型到子类是不行的。只有像上面这样,由子类上转型成父类对象,然后再下转型回子类对象可以,其他情况不行

 

Jk_Father jf = new Jk_Father();
Jk k = (Jk)jf;
k.playGame();



出现的错误:
java.lang.ClassCastException: test1.Jk_Father cannot be cast to test1.Jk
	at test1.Jk.main(Jk.java:29)

 

 

2.多态 

多态分为 静态多态性 和动态多态性。 

    Java实现多态有三个必要条件:继承、重写、向上转型。

    在Java中有两种形式可以实现多态:继承和接口

     1.静态多态性指的就是重载,重载的概念就是  一组方法 ,它们的方法名相同,但是参数列表不同,参数列表不同的情况有,参数的个数不同,参数的数据类型不同,和参数的数据类型的排列顺序不同。这里对返回值类型不做考虑。

      2.动态多态性指的就是重写 override, 重写的定义就是子类对父类继承下来的方法做了修改,覆盖了父类继承下来的方法,重写的方法的方法和父类的方法方法名,参数列表一样,而且要求访问范围应该一样或者更广,比如父类是proteceted的,那么子类重写后应该至少默认,甚至public   访问控制符的范围   依次是  public, protected, default, private

下面这个就是多态   Jk_Father jf = new Jk(); 在下面的代码中有。其实归根到底还是一个上转型对象,不能调用新增方法和属性,一旦你重载了父类的方法,这个方法就是子类新增的方法了,这是上转型对象就不能访问了。很正常。另外,你去访问重写后的方法时,当然是访问的是重写之后地方法。

 

package test1;

public class Jk extends Jk_Father{

	int workyear=12;
	
	public int leval=23;
	
	public void work(int leval) {//这是重载
		System.out.println("工作了"+workyear+"年");
		System.out.println(leval);
	}
	
	/*public void work() {//这是重写
		System.out.println("工作了"+workyear+"年");
	}*/
	
	public void playGame() {
		System.out.println("play games ");
	}
	
	public static void main(String[] args) {
		Jk_Father jf = new Jk();
		jf.work();
	}
}

 

3.异常  

分为检查时异常和运行时异常,检查时异常我们必须处理,用try catch 去捕获异常,要么用throws 去抛出异常,运行时异常我们也可以不处理,系统会自动捕获异常

 

 

 

这次的变量命名不太好,下次会改进的!!

最后贴一个自己觉得写的更好的一篇博客:  https://www.cnblogs.com/chenssy/p/3372798.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值