Review-Java基础--抽象类(abstract)
2016-08-29 17:13
411 查看
抽象类不能被实例化,即如果将一个类声明为abstract,就不能创建这个类的对象。但可以创建一个具体的子类的对象。
另外:可以根据抽象类,可以定义一个抽象类的对象变量,但它只能引用非抽象子类的对象。
假设Person为一个抽象类,Sudent为一个继承自Person的非抽象子类。则Person p=new Person(“name”);当然了这事一个错误的写法
但可以创建一个具体子类的对象
Person p=new Student(“name”);
p为抽象类Person的变量,Person引用了一个非抽象子类Student的实例
另外:可以根据抽象类,可以定义一个抽象类的对象变量,但它只能引用非抽象子类的对象。
假设Person为一个抽象类,Sudent为一个继承自Person的非抽象子类。则Person p=new Person(“name”);当然了这事一个错误的写法
但可以创建一个具体子类的对象
Person p=new Student(“name”);
p为抽象类Person的变量,Person引用了一个非抽象子类Student的实例
package abstractClassess; import javax.swing.text.StyledEditorKit.ForegroundAction; /** * This program demonstracts abstract classes; * * @version 2016-08-29 * @author Administrator * */ public class PersonTest { public static void main(String[] args) { Person[] person = new Person[2]; //抽象类不能实例化 person[0] = new Employee("张三", 3728, 1293, 20, 2); person[1] = new Student("小明", "Computer Science And Technology"); for (Person people : person) { System.out.println(people.getName() + "," + people.getDescription()); } } }
package abstractClassess; public abstract class Person { /* 抽象方法充当占位作用,具体实现在子类中*/ public abstract String getDescription(); private String name; public Person(String name) { this.name=name; } public String getName() { return name; } }
package abstractClassess; public class Student extends Person{ private String major; public Student(String name,String major){ super(name); this.major=major; } public String getDescription() { return ("a student majoring in "+major); } }
package abstractClassess; import java.util.Date; import java.util.GregorianCalendar; public class Employee extends Person{ private double salary; private Date hireDay; public Employee(String name,double s,int year,int month,int day) { super(name); // TODO Auto-generated constructor stub this.salary=s; GregorianCalendar calender=new GregorianCalendar(year,month-1,day); hireDay=calender.getTime(); } public double getSalary() { return salary; } public Date getHireDay() { return hireDay; } @Override public String getDescription() { // TODO Auto-generated method stub return String.format("an employee with a salary of $%.2f", salary); } public void raiseSalary(double byPercent) { double raise=salary * byPercent/100; salary+=raise; } }
相关文章推荐
- JAVA基础再回首(七)——final关键字、抽象类abstract、接口interface、权限修饰符、导包
- 【Java基础】——之抽象类(Abstract)与接口(Interface)
- 黑马程序员—java基础学习--抽象类(abstract)、接口(interface)、多态
- 2018/01/08JAVA 基础 / 接口与继承 / JAVA 抽象类详解:修饰符“abstract"、抽象类与接口的区别
- JAVA基础 - abstract - 抽象类/抽象方法
- java基础案例:abstract(抽象类)的练习
- java基础案例:abstract(抽象类)的概述
- java基础12 抽象类(及关键字:abstract)
- Java中的抽象类和接口 (Abstract Class and Interface in Java)
- java基础问题----abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized
- java 基础知识学习 关于abstract interface final
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- 黑马程序员_Java基础_面向对象(继承、子父类变量和函数以及构造函数特点、final关键字、抽象类、模版方法模式、接口)
- java基础---->接口和抽象类
- Java基础:第三十八讲 抽象类与抽象方法
- java abstract抽象类学习
- Java基础_抽象类
- JAVA基础--接口的概念、分类及与抽象类的区别
- Java基础之面向对象(三)--继承、抽象类、接口、final修饰符、模版方法模式
- Java 基础一些代码练习笔记(抽象类)