Java面向对象-继承与抽象类

面向对象-继承与抽象类*

继承的概述
继承:多个类的有共同的成员变量和方法,抽取到另外一个类中(父类),在让多个类去继承这个父类,我们的多个类就可以获取父类中的成员了
extends
package con_01;

public class ExtendsDemo{
	
}
class Game{
	String name;
	double version;//版本号n
	String agent;//代理商
}
class DotA extends Game{
	/*String name;
	 *double version;//版本号n
	 *String agent;//代理商
	 */
	  public void start(){
	  System.out.println("Game begin");
	 
	}
	public void stop(){
		System.out. println("Game stop");
	}
	
}
class LOl{
	/*String name;
	 *double version;//版本号n
	 *String agent;//代理商
	 */
	public void start(){
		System.out.println("Game begin");
	}
	public void stop(){
		System.out.println("Game stop");
	}
	
}

继承的特点
Java语言只支持单一继承,只能继承一个父类(一个儿子只能由一个亲爹)
Java语言支持多层继承(一个儿子可以有一个亲爹,还可以有一个亲爷爷)
package con_1;

public class Extends{
	public static void main(String[] args){
		LOL l new =  new LOL();
		l.update();
	}
}
class Game{
	System.out.println("游戏启动了")
}
class PCGame extends Game{
	public void update(){
		System.out.println("PCGame更新了")
	}
}
class MobileGame extends Game{
	public void update(){
		System.out.println("MobileGame更新了")
	}
class LOL extends PCGame,MObileGame/*(只支持一个父类)*>{

}

继承中的成员变量的特点
继承中成员方法的特点
方法重写应用场景和注意事项
继承中的构造方法执行顺序
this和super的区别
继承的优缺点
优点:提高代码的复用性,提高了代码的可维护性
缺点:类的耦合性增强了
开发的原则:高内据低耦合
内聚:就是自己完成某件事情的能力
耦合:类鱼类的关系
抽象类的概述
abstract:关键字,用于修饰方法和类
抽象方法:不同类的方法是相似,但是具体内容不太一样,所以我们只能抽取他的声明,没有具体的方法,没有具体方法体的方法就是抽象方法
抽象类:有抽象方法的必须是抽象类

注意:一个类继承了抽象类需要重写 所有的抽象方法,否则这个类就是抽象类
package con_1;

public class AbstractDemo{
	
}
abstract class Animal{
	public abstract void eat();
	
	//非抽象方法可以不重写
	public void run(){
		
	}
}
class Cat extends Animal {
	@Override
	public void eat(){
		System.out.println("猫吃鱼");
	}
}
abstract Dog extends Animal{
	
}

抽象类的特点
特点:抽象方法只能在抽象类里面
抽象类的抽象方法必须被abstract修饰
抽象类不能创建对象(不能实列化)
可以有非抽象的方法
抽象类和类的关系也是继承
一个类继承了抽象类要么重写所有的抽象方法,要么他自己是抽象类
抽象类的成员特点
成员变量
可已有成员变量
可以有常量
成员方法
可以有抽象方法
可以有非抽象方法
构造方法
可以有构造方法的,需要对抽象类的成员变量初始化

final:修饰类(不能被继承),成员变量(常量),成员方法(不能重写)

抽象类案列(老师)
基础班老师 就业班老师
共性
属性 姓名,年龄,性别
行为 讲课,唱歌
package con_1;

public  calss AbstractTest{
	public static boid main(String[] args){
		basicTencher  basic = new basicTencher();
		basic.teach();
	}
}
abstract class teacher{
	String name;
	int age;
	String gender;
	public abstract void teach();
}
class basicTencher extends teacher{
	@Override
	public void basicTencher(){
		System.out.println(name+"基础班课程");
	}
}
class jobTencher  extends teache{
	@Override
	public void basicTencher(){
		System.out.println(name+"就业班课程");
	}
}

抽象类的细节
不能与final,private使用
不能创建对象,有构造方法
可以有抽象方法也可以无抽象方法
抽象类不可实列话和private(不能创建对象)
抽象类的思想
API案列

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值