java基础入门-父类引用子类对象(2)-抽象类

抽象类:具有抽象方法的类,需要使用abstract关键字修饰

关系图

下面上代码

package com.ray.testobject;

/**
 * 抽象类
 *
 * @author ray
 * @since 2015-05-02
 * @version 1.0
 *
 */
public abstract class Person {
	public abstract void getDescription();
}
package com.ray.testobject;

/**
 * 实现类
 *
 * @author ray
 * @since 2015-05-02
 * @version 1.0
 *
 */
public class Man extends Person {

	@Override
	public void getDescription() {
		System.out.println("i am a man");
	}

}
package com.ray.testobject;

/**
 * 继续抽象一个类
 *
 * @author ray
 * @since 2015-05-02
 * @version 1.0
 *
 */
public abstract class Woman extends Person {

	public abstract void getDescription();

}
package com.ray.testobject;

/**
 * 实现类
 *
 * @author ray
 * @since 2015-05-02
 * @version 1.0
 *
 */
public class BeatifulWoman extends Woman {

	@Override
	public void getDescription() {
		System.out.println("i am a beatiful woman");
	}

}
package com.ray.testobject;

/**
 * 测试类
 *
 * @author ray
 * @since 2015-05-02
 * @version 1.0
 */
public class Test {
	public static void main(String[] args) {
		Person man = new Man();
		Person beatifulWoman = new BeatifulWoman();
		Person[] persons = new Person[2];
		persons[0] = man;
		persons[1] = beatifulWoman;
		for (int i = 0; i < persons.length; i++) {
			persons[i].getDescription();
		}
	}
}

输出:

i am a man

i am a beatiful woman

其实这里主要说明的就是Test里面for循环里面,每一个Person的类,指向子类的实现类

然后子类实现父类的抽象方法,只需要父类引用子类对象,即可以通过调用相同的方法,然后输出不同的东西

在这里需要特别说明一下,抽象类是不可以实例化的

时间: 2024-10-13 00:41:47

java基础入门-父类引用子类对象(2)-抽象类的相关文章

父类引用子类对象

先贴上代码 <pre name="code" class="java">package com.ray.object; /** * 父类引用子类对象 * * @author ray * @since 2015-04-30 * @version 1.0 * */ public class Test { class Person { public void say() { System.out.println("i am a person"

Java超类引用子类对象的规律

首先,对于JVM实现引用的一个机制是:类实例的引用就是指向一个句柄(handle)的指针,这个句柄就是一堆指针:一个指针指向一块从java堆中为分配出来内存空间:另一个指针指向一张表(实际上这个表格也有两个指针(一个指针指向一个包含了对象的方法表,另外一个指向类对象,表明该对象所属的类型)) 下面举例进行分析:  Student st=new Student();//Student为子类 Person p=st;//Person 为超类 p.sayHello();//该方法在超类和子类中都存在

父类指针可以直接指向子类对象,父类引用可以直接引用子类对象

1 #include<iostream> 2 #include<string> 3 using namespace std; 4 class parent{ 5 public: 6 int mi; 7 void add(int v){ 8 mi += v; 9 } 10 void add(int a,int b){ 11 mi += (a+b); 12 } 13 }; 14 class child:public parent{ 15 public: 16 int mv; 17 vo

java基础复习之对于String对象,可以使用“=”赋值,也可以使用new关键字赋值,两种方式有什么区别?

String类型是实际工作中经常用到的类型,从数据类型上划分,String是一个引用类型,是API中定义的一个类.所以String类型的对象可以用new创建,例如String name=new String("string");为变量name进行赋值,值为"string" ,然而String类比其他类有些特殊,可以使用'='直接赋值,如 String name="string";也是为变量name进行赋值,值为"string"

C#基础知识—父类和子类的关系

public class ParentClass { public ParentClass() { } public string NamePropety { get; set; } public void GetName() { } } public class ChildClass:ParentClass { public ChildClass() { } public int Age { get; set; } public int GetAge() { return 10; } } Pa

Java基础入门 传智播客pdf

下载地址:网盘下载 内容简介 <Java基础入门>从初学者的角度详细讲解了Java开发中重点用到的多种技术.全书共11章,包括Java开发环境的搭建及其运行机制.基本语法.面向对象的思想,采用典型翔实的例子.通俗易懂的语言阐述面向对象中的抽象概念.在多线程.常用API.集合.IO.GUI.网络编程章节中,通过剖析案例.分析代码结构含义.解决常见问题等方式,帮助初学者培养良好的编程习惯.最后,讲解了Eclipse开发工具,帮助初学者熟悉开发工具的使用.  <Java基础入门>附有配套

Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API

不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权限修饰符,默认访问, 类,方法,成员变量 private 权限修饰符,私有访问, 方法,成员变量 static 静态修饰符 方法,成员变量 final 最终修饰符 类,方法,成员变量,局部变量 abstract 抽象修饰符 类 ,方法 我们编写程序时,权限修饰符一般放于所有修饰符之前,不同的权限修饰

Java 基础入门随笔(11) JavaSE版——继承

1.面向对象的特征二:继承 定义: 指一个对象直接使用另一对象的属性和方法. 好处: 1.提供代码的复用性. 2.让类与类直接产生了关系,给第三个特征多态提供了前提. java中支持单继承.不直接支持多继承,但对C++中的多继承机制进行改良. 单继承:一个子类只能有一个父类. 多继承:一个子类可以有多个直接父类(java中不允许,进行改良,不直接支持,因为多个父类中有相同的成员,会产生调用不确定性,在java中是通过“多实现”的方法来体现的. java支持多层(多重)继承.(例如C继承B,B继承

黑马程序员----Java基础面向对象 父为 子类 以及特点

首先讲  面向过程和面向对象思想! 面向过程的思想:由过程.步骤.函数组成,以过程为核心:面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能.面向过程是先有算法,后有数据结构.面向对象是先有数据结构,然后再有算法.在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象.开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能 .从语法上来看,一个类是一个新的数据类型.在面向对象编程中,除了简单数据类型,就是对象类型. 定义类的格式:cl