java知识day11(抽象类;多态练习;接口;数组高级操作之选择排序)

抽象类什么是抽象类?针对一个事物,如果这个事物并不是具体事物,而是概括性的(需要抽象修饰这个类),比如动物,应该定义不应该定义具体类class Animal{},并且动物的eat()/sleep()每个具体动物吃和睡不同的,所以这些功能应该声明(方法不能方法主体)将当前这个类定义为抽象类!格式:abstract class Animal{} 动物是一个抽象类什么是抽象方法?只是给定义...
摘要由CSDN通过智能技术生成

抽象类

什么是抽象类?

针对一个事物,如果这个事物并不是具体事物,而是概括性的(需要抽象修饰这个类),比如动物,应该定义不应该定义具体类
class Animal{},并且动物的eat()/sleep()每个具体动物吃和睡不同的,所以这些功能应该声明(方法不能方法主体)将当前这个类定义为抽象类!

格式:

abstract class Animal{} 动物是一个抽象类

什么是抽象方法?只是给定义一个方法声明,没有方法主体({})

权限修饰符 返回值类型 方法名();
比如:动物的吃的功能 (抽象的,因为每一个动物吃的是不一样的,定义父类该功能必须为一个抽象)
public abstract void eat() ;

抽象类的特点: 抽象类不能实例化!(不能创建对象)
注意事项:

1.如果一个类中有抽象方法,那么这个类一定是抽象类
2.抽象类中一定是抽象方法吗?
不一定都是抽象方法,可以是非抽象的,也可以抽象的!
3.抽象类的子类是抽象类还是非抽象类呢?
子类是抽象类的情况:
一般情况没有意义的!
父类已经不能实例化(抽象了)
应该采用的父类引用指向子类对象
例如:Animal a = new Cat() ; 子类已经抽象了,无法实例化
研究都是子类是具体类的情况:
创建对象需要通过子类来实例化!

抽象类其他特点:

父类强制子类完成的事情!

抽象类成员特点:

成员变量
既可以是变量也可以是常量
成员方法:
既可以是抽象的(子类必须重写),也可以是非抽象的
构造方法:
抽象类中是可以存在构造方法(无参/有参),作用:对该类对象的数据进行构造初始化

abstract class Fu{
   
	public int num = 100 ;//变量
	public final int num2 = 50 ;//常量
	public Fu(){
   
		System.out.println("我是Fu类的无参构造方法") ;
	}
	//非抽象方法
	public void show(){
   
		System.out.println(num) ;
		System.out.println(num2) ;
		System.out.println("show Fu") ; 
	}
	public abstract void method();
}
//子类
class Zi extends Fu{
   
	public Zi(){
   
		System.out.println("我是Zi类的无参构造方法") ;
	}
	public void method(){
   
		int num = 30 ;
		System.out.println(num) ;
	}
}
//测试类
class AbstractDemo2{
   
	public static void main(String[] args){
   
		Fu f = new Zi() ;
		f.show() ;
		f.method() ;
	}
}

关键词abstract

abstract跟哪些关键字冲突呢?
1.private:私有的,外界不能访问的,被private修饰的方法不能被继承
2.final :状态修饰符 被final修饰的成员方法,不能被重写,而抽象类中的抽象方法必须让子类重写这个功能!
3.static:静态,跟类相关,静态的成员方法,算不上方法重写,能够被static修饰,想通过类名调用

无论功能是抽象方法还是非抽象方法,只要存在方法重写,那么子类在重写父类的方法的时候,访问权限足够大!

多态练习题

class A{
   
	public void show(){
   
		show2();
	}
	public void show2(){
   
		System.out.println("我");
	}
}
class B extends A
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值