抽象类、抽象方法
1、被abstract修饰的方法是抽象方法,抽象方法没有方法体
2、被abstract 修饰的类是抽象类,抽象类中的方法不做限制:全普/全抽/都有
3.如果一个类中含有一个抽象方法,那这个类一定要被声明成抽象类
4.如果一个子类继承一个抽象父类有两种方案:
1)作为抽象子类躺平,不实现抽象父类的抽象方法
2)作为普通子类,实现抽象父类的所有抽象方法
例子:
5.抽象类不可以实例化(创建对象)
抽象类具有构造函数,只不过构造函数不是为了自己创建对象使用,而是为了子类创建对象时默认调用的super()
6.抽象类中的成员测试
1)抽象类中既可以全是抽象方法,也可以全是普通方法,还可以混杂
2)抽象类不可以实例化,如果一个普通类用abstract修饰,那他一定不想被外界创建本类对象

package cn.tedu.oop;
//本例用作抽象类的入门案例
public class ObstractDemo {}
//1.创建父类Car
//4.2添加了抽象方法以后,本类必须被声明成一个抽象类
/**2、被abstract修饰的类是抽象类* 如果一个类中包含了抽象方法,那么这个类必须被声明成一个抽象方法*/
abstract class Car{//3.创建普通方法public void start(){System.out.println("启动");}public void stop(){System.out.println("停止");}//4.1创建抽象方法/**被abstract修饰的方法是抽象方法,抽象方法没有方法体*/public abstract void fly();public abstract void fly2();
}
//2.创建子类bmw
/***3当一个子类继承了抽象父类以后,有两种解决方案:* 1、变成抽象子类* 2、实现父类中所有的抽象方法*/
//方案一
//abstract class BMW extends Car{}
class BMW extends Car{@Overridepublic void fly(){System.out.println("车飞了");}@Overridepublic void fly2() {System.out.println("又飞了");}}

抽象类构造函数

package cn.tedu.oop;
/***本类用于测试抽象类当中构造函数的使用*/
/***抽象类有构造方法* 既然抽象类不可以实例化,为什么还存在构造方法?* 不为了自己创建对象,为了子类创建对象的时候默认使用的super()使用*/
public class AbstractDemo2 {public static void main(String[] args) {//4.创建父类对象测试,报错// Car2 c=new Car2();//5.创建子类对象进行测试BWM2 b=new BWM2();}/***/
}
//1.创建抽象父类
abstract class  Car2{//2.创建抽象父类的构造方法public  Car2(){System.out.println("我是car2的构造函数");}
}
//3.创建子类
class BWM2 extends Car2{public BWM2(){super();System.out.println("我是宝马构造函数");}
}

抽象类成员测试:

package cn.tedu.oop;
/***本类用于测试抽象类成员测试*/
public class AbsatractDemo3 {}
//1.创建抽象父类水果类
abstract class Fruit{/**1、抽象类中定义成员变量*///3.1定义抽象父类中的成员变量int a=1;String b="sss";//3.2、抽象类中可以定义成员常量final String s="ss";/**3抽象类中定义普通方法*/public void clean(){System.out.println("水果要洗洗");}/**4.如果父类中都是普通方法,为什么要定义成抽象类?* 因为抽象类不可以被实例化,如果不想让别人创建本类对象* 就可以把普通类定义成抽象类*//**5.抽象类中可以都是抽象方法*/public abstract void grow();public abstract void eat();}
//abstract class  Banana extends Fruit 抽象类继承抽象父类
//2.创建子类香蕉类
class Banana extends Fruit{//2.普通子类,添加未实现的方法public void grow(){System.out.println("香蕉想长大");}public void eat(){System.out.println("香蕉好吃");}
}

综合案例:

package Abstract;
/**面向抽象编程*/
public class AbstractDemo4 {public static void main(String[] args) {Teacher a=new CGBTeacher(1,"胡汉三");Teacher b=new SCDTeacher(2,"老八");a.speak();b.speak();}
}
abstract class Teacher{int id;String name;public abstract void ready();public abstract void teach();public abstract void speak();
}
class CGBTeacher extends Teacher{public  CGBTeacher(int id,String name){super.id=id;super.name=name;}public void ready(){System.out.println("ssss");}public void teach(){System.out.println("zzzz");}public void speak(){System.out.println("我的id是"+id+"/"+"我的名字是"+name);}
}
class  SCDTeacher extends Teacher{public  SCDTeacher(int id,String name){super.id=id;super.name=name;}public void ready(){System.out.println("aaa");}public void teach(){System.out.println("bbb");}public void speak(){System.out.println("我的id是"+id+"/"+"我的名字是"+name);}
}

综合案例二:

package Abstract;public class self {public static void main(String[] args) {A a=new B(20,2000,"张三","化学");A b=new C(30,1600,"李四","物理");a.Majsubject();a.sum();b.Majsubject();b.sum();}
}
abstract class A{private int age;private int sal;private  String name;private String maj;public A(int age, int sal, String name, String maj) {this.age = age;this.sal = sal;this.name = name;this.maj = maj;}public int getAge() {return age;}public int getSal() {return sal;}public String getName() {return name;}public String getMaj() {return maj;}public abstract void Majsubject();public abstract void sum();
}
class B extends A{public B(int age, int sal, String name, String maj) {super(age, sal, name, maj);}public void Majsubject(){System.out.println("B: 姓名:"+getName()+"\t"+"薪水:"+getSal()+ "\t"+"主修:"+getMaj()+ "\t"+"年龄:"+getAge());}public void sum(){System.out.println("大家好!我是B");}
}
class C extends A{public C(int age, int sal, String name, String maj) {super(age, sal, name, maj);}public void Majsubject(){System.out.println("C: 姓名:"+getName()+"\t"+"薪水:"+getSal()+ "\t"+"主修:"+getMaj()+ "\t"+"年龄:"+getAge());}public void sum(){System.out.println("大家好!我是C");}
}

学习笔记 java学习(三)相关推荐

  1. Linux学习笔记------java学习

    前言 学习笔记仅供参考 该笔记是作者根据b站狂神说视频以及自己翻阅的一些资料而写 视频连接:狂神Linux视频链接 如果有兴趣的小伙伴可以前去观看 如果购买过服务器的话,可以直接使用宝塔进行傻瓜式安装 ...

  2. JDBC学习笔记——Java语言与数据库的鹊桥

    JDBC学习笔记--Java语言与数据库的鹊桥     JDBC(Java DataBase Connectivity):SUN公司提供的 一套操作数据库的标准规范,说白了就是用Java语言来操作数据 ...

  3. 学习笔记-Java并发(一)

    学习笔记-Java并发(一) 目录 学习笔记-Java并发一 目录 Executer Callable和Future 后台线程 线程加入 小计 今天看了这一篇 Java编程思想-java中的并发(一) ...

  4. 深入理解Java虚拟机(第3版)学习笔记——JAVA内存区域(超详细)

    深入理解Java虚拟机(第3版)学习笔记--JAVA内存区域(超详细) 运行时数据区域 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区 运行时常量池 直接内存 对象的创建 对象的内存布局 ...

  5. 判断题:oracle自带的sql语言环境是pl/sql,Oracle之PL/SQL学习笔记之数据类型(三)

    Oracle之PL/SQL学习笔记之数据类型(三) 所有的编程语言中变量是使用最频繁的.PL/SQL作为一个面向过程的数据库编程语言同样少不了变量,利用变量可以把PL/SQL块需要的参数传递进来,做到 ...

  6. 机器学习理论《统计学习方法》学习笔记:第三章 k近邻法

    机器学习理论<统计学习方法>学习笔记:第三章 k近邻法 3 k近邻法 3.1 K近邻算法 3.2 K近邻模型 3.2.1 模型 3.2.2 距离度量 3.2.3 K值的选择 3.2.4 分 ...

  7. Kinect开发学习笔记之(三)Kinect开发环境配置

    Kinect开发学习笔记之(三)Kinect开发环境配置 zouxy09@qq.com http://blog.csdn.net/zouxy09 我的Kinect开发平台是: Win7 x86 + V ...

  8. 计算机网络学习笔记:第三章

    文章目录 计算机网络学习笔记:第三章 前言 3.1.概述和运输层服务 3.1.1 运输层和网络层的关系 3.1.2 因特网运输层概述 3.2.多路复用与多路分解 前言 运输层位于应用层和网络层之间,是 ...

  9. JavaScript 学习笔记(第三天)

    JavaScript 学习笔记(第三天) 一.数组 1.1.数组的基础 1.2.数据类型分类 1.3.创建数组 1.3.1.字面量创建一个数组 1.3.2.内置构造函数创建数组 1.4.数组的基本操作 ...

  10. Python3学习笔记之-学习基础(第三篇)

    Python3学习笔记之-学习基础(第三篇) 文章目录 目录 Python3学习笔记之-学习基础(第三篇) 文章目录 一.循环 1.for循环 2.while循环 3.break,continue 二 ...

最新文章

  1. oracle 闩机制,Oracle latch闩原理示意图
  2. 用户月活跃度在哪里可以查_2020年12月计算机等级考试报名时间,另外11月6号可以查9月考试成绩...
  3. mysql修改表结构语句
  4. 使用cmd打开java文件,报错:“错误,编码GBK的不可映射字符”
  5. Jenkins 插件管理与系统设置
  6. 8乘8led点阵显示数字_51单片机程序设计:[7]88点阵显示汉字
  7. 理解 JavaScript 闭包
  8. javascript 15位和18位身份证的正则表达式及其验证
  9. 人工智能大地图之分布式人工智能篇
  10. java 过滤脚本_【快学SpringBoot】过滤XSS脚本攻击(包括json格式)
  11. Linux Redis自动启动,Redis开机启动,Linux Redis设置开机启动
  12. 快速攻克机器学习图像异常检测
  13. 查询系统linux命令,Linux系统下基本的帮助查询命令小结
  14. 16. go get
  15. SQL注入攻击和防御
  16. VS2010编译log4cpp日志库
  17. android色温值转成rgb
  18. 火电厂给水串级控制系统仿真
  19. ctf_backdoor
  20. 国产肠胃养护猫粮还可以

热门文章

  1. Re27:读论文 LADAN Distinguish Confusing Law Articles for Legal Judgment Prediction
  2. W10系统如何查看笔记本电脑电池损耗情况?
  3. [英语语法]词法之代词
  4. Android 10 后台启动app页面
  5. 对《人工智能的进化》这一人工智能方面科普书籍的学习/摘抄/总结
  6. 狂神JAVA博客MySQL_狂神说SpringBoot08:整合Druid
  7. Error occurred when installing package 'qcloud_cos'
  8. jquery.printarea.js 局部打印去掉页眉页脚
  9. VSCode的VUE项目侧边栏打开资源管理器中的NPM脚本
  10. mysql column specified twice_Column 'box_id' specified twice 错误