Java修炼——面向对象_抽象类和抽象方法

抽象类和抽象方法
什么是抽象类?

使用 abstract 修饰的类称为抽象类

public abstract class Person {
}

抽象类的特征

1) 抽象类不可以创建对象
2) 抽象类可以有构造方法

public abstract class Person{
		public Person(){
			System.out.println("Person类中的无参构造方法");
		}
	}
	抽象类中构造方法的作用,是提供给子类调用的。
	package com.bjsxt.abstractpro;
	public class Student extends Person {
		public Student(){
			super();//调用直接父类的无参构造方法
			System.out.println("Student类的无参构造方法
					");
		}
	}

	public class TestPerson {
		public static void main(String[] args) {
			//Person p=new Person();
			Student stu=new Student();
		}
	}

3) 抽象类中可以包含的成员
成员变量,成员方法,静态方法,构造方法,fina修饰的方
法,抽象方法

public abstract class Person {
	//(1)成员变量/实例变量/属性
	private String name;//姓名
	//(2)成员方法/实例方法
	public void info(){
		System.out.println("大家好,我叫"+name);
	}
	//(3)静态方法
	public static void show(){
	}
	//(4)构造方法
	public Person(){
		System.out.println("Person类中的无参构造方法
				");
	}
	//(5)final修饰的方法,只能被子类调用,不允许被子
	类重写
	public final void fun(){
	}

使用 abstract 修饰的方法称为抽象方法
抽象方法的特征

  1. 抽象方法不允许有方法体,只能以分号“;”结尾
  2. 抽象方法只能声明在抽象类中 (含有抽象方法的类必须
    是抽象类)
  3. 抽象类中可以包含 0 个或多个抽象方法
  4. 抽象方法必须被子类实现
  5. 如果子类不能实现父类中的抽象方法,那么子类也必须 是抽象类
    总结:abstract可以修饰类和方法

什么情况下使用抽象方法和抽象类
通过抽象类,可以避免子类设计的随意性。通过抽象类,
我们就可以做到严格限制子类的设计,使子类之间更加通
用。(程序的可扩展和可维护性)
什么情况下使用抽象类?父类的名称比较抽象,创建对象无
意义。

(使用多态)
Animail 动物类 –》abstract, →abstract shout()
每一种动物 ,分别实现发声的方法

package com.bjsxt.test;

public abstract class Animal {
	public abstract void shout();
}
class Dog extends Animal{

	@Override
	public void shout() {
		System.out.println("狗狗在叫:汪汪汪!");
		
	}
	
}
class Cat extends Animal{

	@Override
	public void shout() {
		System.out.println("猫在叫:喵喵喵!");
		
	}
	
	
}

package com.bjsxt.test;

public class TestAnimal {
	public static void main(String[] args) {
		//父类引用指向子类对象
		Animal dog=new Dog();
		Animal cat=new Cat();
		//调用相同方法
		dog.shout();
		cat.shout();
		
	}
}

在这里插入图片描述

posted @ 2019-12-11 08:57  sakura-yxf  阅读(116)  评论(0)    收藏  举报