java 创建一个抽象类_Java-抽象类
抽象类
含有抽象方法的类就是抽象类
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-抽象类相关推荐
- java创建一个图片_Java 创建一个简单的验证码图片
代码如下: package lixin.gan.test; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2 ...
- java创建byte数组_java.创建一个byte数组,long length = file.length(); byte[] bytes =
导航:网站首页 > java.创建一个byte数组,long length = file.length(); byte[] bytes = 时间:2017-12-17 java.创建一个byte ...
- java创建一个不可变对象_使用不可变对象创建值对象
java创建一个不可变对象 在回答我最近的文章中AutoValue:生成的不可变的值类 , 布兰登认为,这可能是有趣的,看看如何AutoValue比较项目Lombok和Immutables和凯文借调这 ...
- java创建临时文件_用Java创建一个临时文件
java创建临时文件 The task is to create a temporary file in Java. 任务是用Java创建一个临时文件. Creating a temporary fi ...
- java订单类_基于Java创建一个订单类代码实例
这篇文章主要介绍了基于Java创建一个订单类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需求描述 定义一个类,描述订单信息 订单id 订 ...
- java订单类_使用Java创建一个订单类代码实例
这篇文章主要简介了使用Java创建一个订单类代码实例,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 需求描述 定义一个类,描述订单信息 订单id ...
- java创建一个不可变对象_如何在Java中创建不可变类?
java创建一个不可变对象 Today we will learn about the immutable class in Java. What are immutable classes? The ...
- 用java创建一个最简单的窗口
如何使在创建窗体前,需要导入相关的 package 包. import java.awt.*; import javax.swing.*; 使用new关键词来创建一个窗体对象 JFrame j ...
- Java 创建一个线程的三种方式
Java 创建一个线程的三种方式 更多内容,点击了解: https://how2j.cn/k/thread/thread-start/353.html 创建多线程有3种方式,分别是继承线程类,实现Ru ...
- java抽象类_Java抽象类
java抽象类 Abstract class in Java is similar to interface except that it can contain default method imp ...
最新文章
- 看完微软大神写的求平均值代码,我意识到自己还是too young了
- poj 1451(Trie)
- editplus的使用技巧
- PID控制器改进笔记之六:改进PID控制器之参数设定
- poj1743--Musical Theme(后缀数组)
- 一个简单的GridView分页通用程序
- 单页面登录——编码传参(oa会对#号会进行截断)
- 1 各种Linux系统下载镜像站(系统)
- C++使用ODBC连接数据库遇到的问题
- 晶体管电路设计.铃木雅臣
- threejs 管子_使用webgl(three.js)搭建一个3D智慧园区、3D建筑,3D消防模拟,web版3D,bim管理系统——第四课...
- 生命主题dreamweaver作业静态HTML网页设计——卫生与健康 6页 带视频
- linux服务器远程修改mac地址,linux下修改MAC地址问题解决方法
- 【手机刷机】360 n4s降级039 root刷机(卡刷、线刷等)
- 网页设计:Meta标签详解
- bim 模型web页面展示_一种基于BIM模型的Web端轻量化展示方法与流程
- 【iOS底层】11:消息转发
- GPIO输入输出各种模式(推挽、开漏、准双向端口)详解【转】
- C#毕业设计——基于C#+asp.net+SQL Server的公交车管理系统设计与实现(毕业论文+程序源码)——公交车管理系统
- Android超级终端之Termux(1)
热门文章
- linux 不同用户时间,Linux时间子系统之(一):时间的基本概念
- 错过一个订单后,吐槽下自己(顺便分享下书单),剧终版
- 一篇文章普及各种ios基本知识
- 旅游网站java项目模板_基于jsp的旅游网站sx-JavaEE实现旅游网站sx - java项目源码...
- RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR
- cml sml区别_CAL.CML.SML的关系
- 中国计量大学计算机专业全国名次多少,中国计量大学实力水平如何,全国排名是多少?...
- 与西安协同销售总监赵建春先生避风塘聊天记
- 红米8a的android版本是多少,小米Redmi 8A推送最新MIUI 11稳定版 基于安卓10大版本
- 浅析android手游lua脚本的加密与解密