Java abstract 抽象类的详解介绍

Java abstract 抽象类的详解介绍抽象类的概念,及抽象类的特点,及抽象类的成员特点

Java

抽象类概念
    .在Java中,一个没有方法体的方法应该被定义为抽象方法,而类中如果有抽象方法,那么该类必须定义为抽象类
    
抽象类特点(官方说法
    .抽象类和抽象方法必须使用abstract关键字
       示例
       public abstract class 类名
       public abstract void 方法名();
    .抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
    .抽象类不能被实例化    
       .如何进行实例化呢? 参照多态的方式,通过子类对象实例化,这叫抽象多态
    .抽象类的子类
       .要么重写抽象类中的所有抽象方法
       .要么是抽象类
             
抽象类特点(自己领悟)
    .抽象类和抽象方法都必须使用abstract关键字来修饰
    .抽象类里面是可以存放非抽象方法的(抽象类里面可以没有抽象方法)但是有抽象方法的类必须是抽象类 
    .抽象类不可被创建对象,也就是实例化,
    (抽象类想要访问方法,就必须有使用多态的方法,也就是有继承关系,也就是使子类实例化,通过子类的继承关系,来访问到抽象类也就是父类)
    .抽象类中的子类,要么重写抽象类中的抽象方法,要么也是抽象类
抽象类的成员特点
    成员变量
        .可以是变量
        .也可以是常量
    构造方法
        .有构造方法,但是不能实例化
        .那么,构造方法的作用是什么?用于子类访问父类数据的初始化
    成员方法
        .可以有抽象方法:限定子类必须完成一些动作
        .也可以有非抽象方法:提高代码的复用性     代码的复用性,是由继承保证的

以下第一个案例有五个类,分别是animaldemo类  animal类 cat类 dog类

第二个案例有三个类,用来验证抽象类的成员特点

分别有animaldemo类  animal类  cat类

 animaldemo类

package abstract抽象类;

public class animaldemo {
	/*
抽象类
    .在Java中,一个没有方法体的方法应该被定义为抽象方法,而类中如果有抽象方法,那么该类必须定义为抽象类
    
抽象类特点(官方说法)
    .抽象类和抽象方法必须使用abstract关键字
       示例
       public abstract class 类名
       public abstract void 方法名();
    .抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
    .抽象类不能被实例化    
       .如何进行实例化呢? 参照多态的方式,通过子类对象实例化,这叫抽象多态
    .抽象类的子类
       .要么重写抽象类中的所有抽象方法
       .要么是抽象类
             
抽象类特点(自己领悟)
    .抽象类和抽象方法都必须使用abstract来修饰
    .抽象类里面是可以存放非抽象方法的(抽象类里面可以没有抽象方法)但是有抽象方法的类必须是抽象类 
    .抽象类不可被创建对象,也就是实例化,
    (抽象类想要访问方法,就必须有使用多态的方法,也就是有继承关系,也就是使子类实例化,通过子类的继承关系,来访问到抽象类也就是父类)
    .抽象类中的子类,要么重写抽象类中的抽象方法,要么也是抽象类
抽象类的成员特点
    成员变量
        .可以是变量
        .也可以是常量
    构造方法
        .有构造方法,但是不能实例化
        .那么,构造方法的作用是什么?用于子类访问父类数据的初始化
    成员方法
        .可以有抽象方法:限定子类必须完成一些动作
        .也可以有非抽象方法:提高代码的复用性     代码的复用性,是由继承保证的
    
	 */

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		//抽象类不是具体的,就不能创建对象,所以animal a = new animal();就会报错
//		animal a = new animal();
//		a.eat();
		animal a = new cat();
		a.eat();
		a.sleep();//可以通过子类的对象实例化后 进行访问和调用,但是有个前提就是,必须有了继承关系之后
	}

}

animal类

package abstract抽象类;

public abstract class animal {
//	public void eat() {
//		// TODO 自动生成的方法存根
//		System.out.println("吃东西");
//
//	}
	//一个方法,要么有方法体,要么把他定义为抽象的
	//抽象方法必须放到抽象类里面
	public abstract void eat(); 
	public void sleep() {
		// TODO 自动生成的方法存根
		System.out.println("睡觉");

	}
	

}

 cat类

package abstract抽象类;

public class cat extends animal {
	@Override
	public void eat() {
		// TODO 自动生成的方法存根
		System.out.println("猫吃鱼");
		
	}

}

dog类

package abstract抽象类;

public abstract class dog extends animal{

}

 第二个案例animaldemo类  animal类  cat类

animaldemo类

package abstract抽象类成员特点;

public class animaldemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		animal a = new cat();
		a.eat();
		a.show();

	}

}

animal类

(可以看得出来,在这里面,我们写构造方法了,但是既然抽象类不能被实例化,构造方法的存在又有何意义呢?其实我们可以根据多态的方法,利用他的子类来创建对象,然后就可以根据构造方法进行赋值了)

package abstract抽象类成员特点;

public abstract class animal {
	private int age =20;
	private final String city="北京";
	
	public void show() {
		// TODO 自动生成的方法存根
		age=40;
		System.out.println(age);
//		city="上海";
		System.out.println(city);

	}
	public abstract void eat();
	
	
	
	
	/**
	 * @param age
	 */
	public animal(int age) {
		super();
		this.age = age;
	}
	/**
	 * 
	 */
	public animal() {
		super();
	}
	
	
	
	
	

	

}

cat类

package abstract抽象类成员特点;

public class cat extends animal {
	@Override
	public void eat() {
		// TODO 自动生成的方法存根
	System.out.println("猫吃鱼");	
	}

}

今天的文章Java abstract 抽象类的详解介绍分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33555.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注