抽象类

含有抽象方法的类就是抽象类

1) 抽象方法:该方法有返回值,有参数,就是没有方法体,该方法没有方法实现

2) 抽象方法的格式:

abstract 返回值类型 方法名(参数列表);

3) 抽象类需要靠子类来重写抽象方法,以实现其功能

public classTest1 {//抽象类:含有抽象方法的类//抽象方法:没有方法体的方法

public static voidmain(String[] args) {

Taxi taxi=newTaxi();

taxi.name="出租车";

taxi.start();

taxi.run();

taxi.stop();

}

}//定义一个抽象类Car:属性:名字,价格,速度//方法:启动,运行,刹车,全是抽象方法

abstract classCar{

String name;doubleprice;intspeed;public abstract voidstart();public abstract voidrun();public abstract voidstop();

}class Taxi extendsCar{//抽象类是依靠子类,来实现其功能(子类重写抽象方法)

public voidstart() {

System.out.println(name+"行驶");

}public voidrun() {

System.out.println(name+"启动");

}public voidstop() {

System.out.println(name+"刹车");

}

}

4) 抽象类不能直接实例化(创建对象)

public classTest1 {public static voidmain(String[] args) {//Foo1 foo1=new Foo1();---报错

}

}abstract classFoo1{abstract voidshow();

}

5) 可以使用抽象类声明一个对象,然后利用该抽象类的子类来创建对象

格式:抽象类 对象名-->定义对象

对象名=new 子类构造方法-->创建对象

抽象名 对象名=new 子类构造方法

public classTest1 {public static voidmain(String[] args) {

Koo1 koo1=new Koo2(); //抽象类名(父类) 对象名=new 子类的构造方法

koo1.show();

}

}abstract class Koo1{//父类---声明(定义)对象

public abstract voidshow();

}class Koo2 extends Koo1{//子类---创建对象

public voidshow() {

System.out.println("昨天下雨了");

}

}

6) 父类声明指向子类引用

格式:父类 对象=new 子类的构造方法

编译时(javac)           运行时(java)

用这种方式创建的对象,可以访问父类的除重写以外所有的方法,可以访问子类重写父类的方法

唯一不能做的事,就是访问子类独有的方法

public classTest1 {public static voidmain(String[] args) {

Eoo eoo=newEoo2();

eoo.show();//访问子类中重写父类的方法

eoo.print();//父类中的普通方法//eoo.speak();---报错//不能访问子类独有的方法

}

}classEoo{voidshow(){

System.out.println("今天是个好天气");

}voidprint(){

System.out.println("今天是周一");

}

}class Eoo2 extendsEoo{voidshow(){

System.out.println("天气好好");//重写

}void speak(){//子类独有的方法

System.out.println("说话");

}

}

7) 抽象类跟一般类是一样的,只是抽象类含有抽象方法(没有方法体的方法)

抽象类需要靠子类来重写所有的抽象方法,以实现其功能

创建对象:

1.直接使用子类来声明和创建对象

2.父类声明指向子类的对象

public classTest1 {public static voidmain(String[] args) {

Person person=new Worker("张",23,"男",5000);

person.print();

person.show();

}

}//设计Person类型,属性:姓名,年龄,性别//构造方法:1.空参的构造方法//2.带(姓名,年龄,性别)的构造方法//方法:show():显示姓名,年龄属性//抽象方法print();//设计Worker类型,属性:姓名,性别,年龄,工资//构造方法:给所有的属性赋值//方法:重写print()方法,显示该对象所有的属性//

abstract classPerson{

String name;intage;

String sex;

Person(){}

Person(String name,intage,String sex){this.name=name;this.age=age;this.sex=sex;

}voidshow(){

System.out.println(name+","+age);

}public abstract voidprint();

}class Worker extendsPerson{doublesalary;

Worker(String name,int age,String sex,doublesalary){super(name,age,sex);this.salary=salary;

}public voidprint() {

System.out.println(name+","+age+","+sex+","+salary);

}

}

设计模式---工厂模式(了解)

用一个类来帮我们创建和管理对象,就是工厂模式

public classTest1 {//工厂类中用来提供对象的方法,最好设计静态方法,易于调用

public static voidmain(String[] args) {

Emp emp=EmpFactory.getInstance();

emp.show();;

}

}classEmpFactory{public staticEmp getInstance(){

Emp emp=new Emp("刘",45);returnemp;

}

}classEmp{

String name;intage;

Emp(String name,intage){this.name=name;this.age=age;

}voidshow(){

System.out.println(name+","+age);

}

}

public classTest1 {public static voidmain(String[] args) {

Car car=CarFactory.getInstance(1);

car.name="Bmw";

car.show();

Car car1=CarFactory.getInstance(2);

car1.name="Benz";

car1.show();

}

}//设计一个父类Car,属性:名字//构造方法:空参构造方法,带名字的构造方法//方法:show显示该Car的名字//设计一个Car的子类Bmw,属性:速度//设计一个Car的子类Benz,属性:价格//设计一个Car的子类QQ,属性:颜色//设计一个工厂,可以根据用户的请求来创建不同的子类对象

classCar{

String name;

Car(){}

Car(String name){this.name=name;

}voidshow(){

System.out.println(name);

}

}class Bmw extendsCar{intspeed;

}class Benz extendsCar{doubleprice;

}class QQ extendsCar{

String color;

}//分析:参数来代表用户不同的请求//1---BMZ,2---Benz,3----QQ//工厂中获得对象的方法,可以根据调用参数的不同,返回不同的Car的子类对象

classCarFactory{public static Car getInstance(inttype){

Car car=null;if(type==1){

car=newBmw();

}else if(type==2){

car=newBenz();

}else if(type==3){

car=newQQ();

}returncar;

}

}

java 创建一个抽象类_Java-抽象类相关推荐

  1. java创建一个图片_Java 创建一个简单的验证码图片

    代码如下: package lixin.gan.test; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2 ...

  2. java创建byte数组_java.创建一个byte数组,long length = file.length(); byte[] bytes =

    导航:网站首页 > java.创建一个byte数组,long length = file.length(); byte[] bytes = 时间:2017-12-17 java.创建一个byte ...

  3. java创建一个不可变对象_使用不可变对象创建值对象

    java创建一个不可变对象 在回答我最近的文章中AutoValue:生成的不可变的值类 , 布兰登认为,这可能是有趣的,看看如何AutoValue比较项目Lombok和Immutables和凯文借调这 ...

  4. java创建临时文件_用Java创建一个临时文件

    java创建临时文件 The task is to create a temporary file in Java. 任务是用Java创建一个临时文件. Creating a temporary fi ...

  5. java订单类_基于Java创建一个订单类代码实例

    这篇文章主要介绍了基于Java创建一个订单类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需求描述 定义一个类,描述订单信息 订单id 订 ...

  6. java订单类_使用Java创建一个订单类代码实例

    这篇文章主要简介了使用Java创建一个订单类代码实例,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 需求描述 定义一个类,描述订单信息 订单id ...

  7. java创建一个不可变对象_如何在Java中创建不可变类?

    java创建一个不可变对象 Today we will learn about the immutable class in Java. What are immutable classes? The ...

  8. 用java创建一个最简单的窗口

    如何使在创建窗体前,需要导入相关的 ​package​ 包. import java.awt.*; import javax.swing.*; 使用​new​关键词来创建一个窗体对象 JFrame j ...

  9. Java 创建一个线程的三种方式

    Java 创建一个线程的三种方式 更多内容,点击了解: https://how2j.cn/k/thread/thread-start/353.html 创建多线程有3种方式,分别是继承线程类,实现Ru ...

  10. java抽象类_Java抽象类

    java抽象类 Abstract class in Java is similar to interface except that it can contain default method imp ...

最新文章

  1. 看完微软大神写的求平均值代码,我意识到自己还是too young了
  2. poj 1451(Trie)
  3. editplus的使用技巧
  4. PID控制器改进笔记之六:改进PID控制器之参数设定
  5. poj1743--Musical Theme(后缀数组)
  6. 一个简单的GridView分页通用程序
  7. 单页面登录——编码传参(oa会对#号会进行截断)
  8. 1 各种Linux系统下载镜像站(系统)
  9. C++使用ODBC连接数据库遇到的问题
  10. 晶体管电路设计.铃木雅臣
  11. threejs 管子_使用webgl(three.js)搭建一个3D智慧园区、3D建筑,3D消防模拟,web版3D,bim管理系统——第四课...
  12. 生命主题dreamweaver作业静态HTML网页设计——卫生与健康 6页 带视频
  13. linux服务器远程修改mac地址,linux下修改MAC地址问题解决方法
  14. 【手机刷机】360 n4s降级039 root刷机(卡刷、线刷等)
  15. 网页设计:Meta标签详解
  16. bim 模型web页面展示_一种基于BIM模型的Web端轻量化展示方法与流程
  17. 【iOS底层】11:消息转发
  18. GPIO输入输出各种模式(推挽、开漏、准双向端口)详解【转】
  19. C#毕业设计——基于C#+asp.net+SQL Server的公交车管理系统设计与实现(毕业论文+程序源码)——公交车管理系统
  20. Android超级终端之Termux(1)

热门文章

  1. linux 不同用户时间,Linux时间子系统之(一):时间的基本概念
  2. 错过一个订单后,吐槽下自己(顺便分享下书单),剧终版
  3. 一篇文章普及各种ios基本知识
  4. 旅游网站java项目模板_基于jsp的旅游网站sx-JavaEE实现旅游网站sx - java项目源码...
  5. RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR
  6. cml sml区别_CAL.CML.SML的关系
  7. 中国计量大学计算机专业全国名次多少,中国计量大学实力水平如何,全国排名是多少?...
  8. 与西安协同销售总监赵建春先生避风塘聊天记
  9. 红米8a的android版本是多少,小米Redmi 8A推送最新MIUI 11稳定版 基于安卓10大版本
  10. 浅析android手游lua脚本的加密与解密