面向对象之抽象

本文探讨了抽象类的概念,强调了抽象类在面向对象编程中的作用。抽象类用于定义共同接口,包含抽象方法,不允许实例化。文章提到了抽象类的特点,如抽象方法的声明、抽象类的构造、子类的继承规定,以及抽象类中的成员变量和方法的作用。同时,讨论了抽象类与普通类的区别,并指出抽象方法与private、final、static、native修饰符的不兼容性。
摘要由CSDN通过智能技术生成

抽象类Abstract

抽象类
形状类:三角形 圆形 矩形
父类的方法必须要存在,因为我们多态的必要条件是必须存在方法重写
方法的实现毫无意义
提供一个方法的声明即可,不需要实现,就是抽象方法

抽象类的特点:
1.抽象方法和抽象类使用 abstract 修饰
2.有一个抽象方法的类必须是抽象类
3.抽象类中一定有抽象方法吗? --> 不一定
4.没有抽象方法的抽象类有意义吗? --> 有意义,防止外界创建对象

防止外界实例的方式:
a.构造方法私有
b.抽象类
c.接口
d.内部类
5.抽象类不能够实例化 – 利用多态
6.抽象类的子类的特点:
a.如果子类想要继承抽象类,就必须实现抽象类中所有的抽象方法
b.如果子类不想实现父类的抽象方法,那么子类必须升级为抽象类
7.抽象类和普通类的区别
抽象类中可以有成员变量,成员方法,构造方法,静态方法,常量? 有的话又有什么意义呢?
成员变量 --> 给子类使用
成员方法 --> 给子类使用
构造方法 --> 帮助子类初始化父类继承下来的成员
静态方法 --> 直接通过类名访问,防止创建对象的不建议访问方式
常量 --> 可以,方便访问
抽象类和普通类没有区别,只不过是抽象类多了抽象方法而已

抽象类的抽象方法强制子类重写
非抽象方法直接给子类使用
构造方法和成员变量直接给子类使用

抽象类是一个彻头彻尾的服务类,服务于所有的子类
8.抽象类的成员一般使用 public 或者 protected
9.private final static native 可以用来修饰抽象方法吗?
private修饰的方法不能够被子类继承,更不可能被重写,abstract修饰的方法强制子类重写,二者冲突
final修饰的方法不能够被子类继承,更不可能被重写,abstract修饰的方法强制子类重写,二者冲突
static修饰的方法一般方便调用,一般都是用来实现功能的,抽象方法没有方法体,二者没有意义
native修饰的方法不是Java实现的,有方法体,抽象方法没有方法体,二者没有意义

举例1代码如下所示:

public class AbstractDemo01 {
   
	public static void main(String[] args) {
   
		// Shape s2 = new Shape();
		Shape s = new Triangle(2, 3, 4);
		System.out.println(s.getPerimeter());
		s = new Circle(1);
		System.out.println(s.getPerimeter());
		Shape.staticMethod();
		System.out.println(Shape.NUM);

	}
}

abstract class Shape {
   
	
	public static int NUM = 100;
	
	String name;
	
	public Shape() {
   }
	
	public Shape(String name) {
   
		this.name = name;
	}
	
	public abstract double getPerimeter();

	public abstract double getArea() 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值