Java 类与对象(继承extends super关键词 方法重写 抽象abstract 访问修饰符/权限控制符)

飞机大战分析:
对象提取类:小敌机/大敌机/自己的飞机/子弹/小蜜蜂

小敌机类:
	成员变量:
		int x,int y,图片,int width,int height
	成员方法:
		move()
		
大敌机类:
	成员变量:
		int x,int y,图片,int width,int height,int life
	成员方法:
		move()
		
自己的飞机类:
	成员变量:
		int x,int y,图片,int width,int height,int life,int score,子弹
	成员方法:
		move()
		
子弹类:
	成员变量:
		int x,int y,图片,int width,int height
	成员方法:
		move()
		
小蜜蜂类:
	成员变量:
		int x,int y,图片,int width,int height
	成员方法:
		move()

把所有类中相同的成员变量和成员方法 -> 提取出来 -> 形成一个类 -> 父类

升级版:

子类 extends 父类
父类(基类):
	成员变量:
		int x,int y,图片,int width,int height
	成员方法:
		move()
子类(衍生类/扩张类):
	小敌机类:
	大敌机类:
		int life
	自己的飞机类:
		int life,int score,子弹
	子弹类:	
	小蜜蜂类:

1.继承(extends)

1.结构:
	子类(衍生类/扩张类) extends 父类/基类
2.继承的特征
	1)子类继承父类,会继承父类所有的成员变量和成员方法
	2)所有的类都有唯一一个父类 如果没有写父类,那么就会默认继承Object
	3)子类可以拥有自己的成员变量和成员方法 并且子类的功能一定比父类的更强大
	4)一个类只能继承一个父类 父类可以拥有很多个子类

特殊情况:

1.创建子类对象之前,会先创建父类对象 加载子类之前会先加载父类
2.构造方法:
	调用子类构造方法之前,一定会调用父类的构造方法,默认调用父类的无参构造方法
3.子类中可以引用父类对象
4.子类和父类中有相同的成员变量时
	例如:name
	那么会先去运行子类中属性,如果没有才会去找父类中的成员变量
	建议:子类和父类中不要有相同的成员变量
5.通过子类对象调用方法时 会先去找子类中有没有这个方法,如果有就实现子类中的内容;如果没有就会去找父类中的这个方法

2.super关键词

1)调用子类构造方法之前,一定会调用父类的构造方法,默认调用父类的无参构造方法
	使用super关键词调用
2)父类中的构造方法 只能调用,不能继承,默认添加super()
3)如果父类中没有无参构造方法,就需要手动调用父类中的有参构造方法
	super(参数)
4)super	(参数),只能放在第一行

3.方法重写

1)重写的前提:
	必须存在父子类关系
2)语法结构:
	子类的方法名+方法参数+返回值类型都必须和父类中一致

方法的重写(Override)和方法的重载(Overload)的区别:

方法的重写的前提:
	必须在父子类关系中
方法的重载的前提:
	必须在同一个类中
	参数不一样:
		个数 顺序 类型

this和super的区别:

this表示当前对象
super表示父类对象

4.抽象(abstract)

abstract可以修饰类和方法
1)抽象方法:
	a.出现的前提:
		例如:move()
			所有的子类中的move()都有不用的实现,那也就是说明父类中的move()方法体没有意义
			没有意义的东西不需要 -> 删除 ->抽象方法 ->加abstract
	b.子类必须重写父类中的抽象方法 如果不重写,就要把自己变成抽象类
	c.抽象方法的特点
		1.没有方法体的方法叫抽象方法
		2.抽象方法一定要存在于抽象类中
	
2)抽象类
	a.abstract修饰的类叫抽象类
	b.抽象类不能new对象,也就是不能创建类的实例化(new dog())
	c.抽象类也有构造方法.就是为了给子类使用

3)abstract不能修饰成员变量,因为成员变量是有具体的类型

判断:
	有抽象方法的类就是抽象类 √
	抽象类就是有抽象方法的类 ×
	没有抽象方法的也是抽象类 √

5.访问修饰符/权限控制符

public:公开的,公共的
protected:受保护的 -> 经常修饰有父子类关系的类
default:默认的,(default)是不写的,没有这个词
private:私有的

访问控制符可以修饰类/可以修饰[静态]成员变量/修饰[静态]成员方法/代码块

自己类中:                              public    protected    default    private
同包(没有任何关系的类/不同类):           public    protected    default    
不同包下(有父子关系的类):                public    protected    
所有类(不同包下没有父子关系得类):         public    
	
访问权限范围:
	最大得是public 最小的是private
	
使用情况:
	public:想让所有的类都可见时
	protected:在父子类关系中可用
	default:不常用,练习时使用
	private:普通类中都可用
		get/set

面向对象4大特征:封装 继承 多态 抽象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值