java基础打卡24

Java继承的三个特点

1. Java语言是【单继承】的。一个类的直接父亲只能有唯一一个。
例如:	class A {}
		class B extends A {} //正确
		class C {}
		class D extends A,C {} //错误
2. Java语言可以【多级继承】。我有一个父亲,我父亲还有一个父亲,也就是爷爷。
例如:	class A {}
		class B extends A {} //正确
		class C extends B {} //正确
		
【java.lang.Object是祖宗类】

3. 一个子类的直接父亲是唯一的,但是一个父类可以拥有很多个子类。可以有很多个兄弟姐妹,生二胎。
例如:	class A {}
		class B extends A {} //正确
		class C extends A {} //正确

方法区中保存的Zi.class{}中包含[[super_class]]

抽象方法与抽象类

如果父类当中的方法不确定如何进行{}方法体实现,那么这就应该是一个【抽象方法】。

父类:计算图形面积的方法 //【抽象方法】 子类:正方形、三角形、圆形
父类:动物爱吃的东西 //【抽象方法】 子类:狗爱吃骨头、猫爱吃鱼

抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束。
例如:	public abstract void eat();
		//这是一个抽象方法,代表吃东西,但是具体吃什么(大括号的内容)不确定。
				
抽象类:抽象方法所在的类,必须是抽象类才行。在class之前写上abstract即可。
例如:	public abstract class Animal {}

如何使用抽象类和抽象方法:
1. 不能直接创建(new)抽象类对象。
例如:	// Animal animal = new Animal();//错误写法!
2. 必须用一个子类来继承抽象父类。
例如:	public class Cat extends Animal{}
3. 子类必须覆盖重写抽象父类当中所有的抽象方法。
覆盖重写(实现):子类去掉抽象方法的abstract关键字,然后补上方法体大括号。
例如:	@Override
	    public void eat(){
	        System.out.println("猫吃鱼");
	    }
4. 创建子类对象进行使用。
例如:	Cat cat = new Cat();

光标放在抽象子类处,按alt+回车再回车	可以自动覆盖重写
  • 抽象类注意事项
1. 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。
理解:抽象方法没有具体的方法体,没有意义。

2. 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。
理解:子类的构造方法中,有默认的super(),需要访问父类构造方法。

3. 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象的。
理解:一个抽象不一定含有抽象方法,只要保证抽象方法所在的类是抽象类,即可。
这样没有抽象方法的抽象类,也不能直接创建对象,在一些特殊场景下有用途。
	
4. 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。

发红包案例练习

  • 案例分析
用户类:姓名、余额
extends:群主类:【发红包的方法】	普通成员类:【收红包的方法】	

【发红包】的逻辑,三要素:
返回值类型:ArrayList<Integer>
方法名称:send
参数列表:1. 总共发多少钱	int totalMoney
		 2. 分成多少份	int count
public ArrayList<Integer> send(int totalMoney, int count) {
	//...
}	

【收红包】的逻辑,三要素:
返回值类型:void
方法名称:receive
参数列表:ArrayList<Integer>
public void receive(ArrayList<Integer> list) {
	//...
}
  • 用户类
public class User {
    private String name;//姓名
    private int money;//余额,也就是当前用户拥有的钱数
    //展示一下当前用户有多少钱
    public void show() {
        System.out.println("我叫:" + name + ",我有多少钱:" + money);
    }
    
	// 有参构造、无参构造、Getter/Setter用Alt+Insert自动生成
}    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值