JAVA进阶2
间歇性混吃等死,持续性踌躇满志系列-------------第2天
1、父类子类继承(注:一个JAVA源文件中只能有一个public类,public 类的名字必须和这个编译单元的文件名完全相同,包括大小
写。)
public class Bird{
String color ="red"; //颜色
String skin = "羽毛"; //皮毛
}
class Pigeon extends Bird{
public static void main(String[] args){
Pigeon pigeon = new Pigeon();
System.out.println(pigeon.color);
System.out.println(pigeon.skin);
}
}
运行结果图

2、经理和员工的差异(子类与父类案例)
import java.util.Date; //导入java.util.Date类
class Employee{
private String name; //员工的姓名
private double salary; //员工的工资
private Date birthday; //员工的生日 public String getName(){ //获取员工的姓名
return name;
}
public void setName(String name){ //设置员工姓名
this.name = name;
}
public double getSalary(){ //获取员工的工资
return salary;
}
public void setSalary(double salary){ //设置员工工资
this.salary = salary;
}
public Date getBirthday(){ //获取员工生日
return birthday;
}
public void setBirthday(Date birthday){ //设置员工生日
this.birthday = birthday;
}
}
class Manager extends Employee{
private double bonus; //经理的奖金
public double getBonus(){ //获取经理的奖金
return bonus;
}
public void setBonus(double bonus){ //设置奖金
this.bonus = bonus;
}
}
public class Test{
public static void main(String[] args){
Employee employee = new Employee(); //创建Employee对象并为其赋值
employee.setName("c#");
employee.setSalary(99);
employee.setBirthday(new Date());
Manager manager = new Manager(); //创建Manager对象并为其赋值
manager.setName("hello");
manager.setSalary(300);
manager.setBirthday(new Date());
manager.setBonus(200);
System.out.println("员工的姓名:"+employee.getName());
System.out.println("员工的工资:"+employee.getSalary());
System.out.println("员工的生日:"+employee.getBirthday());
//输出经理和员工的属性值
System.out.println("经理的姓名:"+manager.getName());
System.out.println("经理的工资:"+manager.getSalary());
System.out.println("经理的生日:"+manager.getBirthday());
System.out.println("经理的奖金:"+manager.getBonus());
}
}
运行结果图

3、多态(方法的重载,重载的方法之间并不一定必须有联系,但为了提高程序可读性,一般只重载功能相似的方法。)
注:在进行方法重载时,方法返回值的类型不能作为区分方法的标志。
public class Calculate{
final float PI = 3.14159f; //定义一个用于笔试圆周率的常量PI
//求圆的面积
public float getArea(float r){ //定义一个用于计算面积的方法getArea()
float area = PI*r*r;
return area;
}
//求矩形的面积
public float getArea(float l,float w){
float area = l*w; //重载getArea()方法
return area;
}
//画任意形状的图形
public void draw(int num){ //定义一个用于画图的方法draw()
System.out.println("画"+num+"个任意形状的图形");
}
public void draw(String shape){ //重载draw()方法
System.out.println("画一个"+shape);
}
public static void main(String[] args){
Calculate calculate = new Calculate(); //创建Calculate类的对象并为其分配内存
float l = 20;
float w = 40;
float areaRectangle = calculate.getArea(l,w);
System.out.println("求长为"+l+"宽为"+w+"的矩形的面积是:"+areaRectangle);
float r = 7;
float areaCirc = calculate.getArea(r);
System.out.println("求半径为"+r+"的圆的面积是:"+areaCirc);
int num = 10;
calculate.draw(num);
calculate.draw("三角形");
}
}
运行结果图

4、计算几何图形的面积(使用抽象方法计算面积)
abstract class Shape{
public String getName(){ //获得图形的名称
return this.getClass().getName();
}
public abstract double getArea(); //获得图形的面积
}
class Circle extends Shape{
private double radius;
public Circle(double radius){ //获得圆形的半径
this.radius = radius;
}
public double getArea(){ //计算圆形的面积
return Math.PI*Math.pow(radius,2);
}
}
class Rectangle extends Shape{
private double length;
private double width;
public Rectangle(double length,double width){
//获得矩形的长度和宽
this.length = length;
this.width = width;
}
public double getArea(){
return length*width;
}
}
public class Test{
public static void main(String[] args){
//创建圆形的对象并将半径设置成10
Circle circle = new Circle(10);
System.out.println("图形的名称是:"+circle.getName());
System.out.println("图形的面积是:"+circle.getArea());
//创建矩形的对象并将长和宽设置成2
Rectangle rectangle = new Rectangle(2,2);
System.out.println("图形的名称是:"+rectangle.getName());
System.out.println("图形的面积是:"+rectangle.getArea());
}
}
运行结果图

5、简单的汽车销售市场
abstract class Car{
//用来描述汽车的信息
public abstract String getInfo();
}
class BMW extends Car{
//用来描述汽车的信息
public String getInfo(){
return "BMW";
}
}
class Benz extends Car{
//用来描述汽车的信息
public String getInfo(){
return "Benz";
}
}
class CarFactory{
public static Car getCar(String name){
//如果需要BMW则创建BMW对象
if(name.equalsIgnoreCase("BMW")){
return new BMW();
}else if(name.equalsIgnoreCase("Benz")){ //如果需要Benz则创建Benz对象
return new Benz();
}else{
//暂时不支持其他车型
return null;
}
}
}
public class Customer{
public static void main(String[] args){
System.out.println("顾客要购买BMW");
//顾客要购买BMW
Car bmw = CarFactory.getCar("BMW");
//提取BMW
System.out.println("提取汽车:"+bmw.getInfo());
System.out.println("顾客要购买benz");
//顾客要购买BMW
Car benz = CarFactory.getCar("benz");
//提取BMW
System.out.println("提取汽车:"+benz.getInfo());
}
}
运行结果图

6、抽象类(抽象方法不能使用private或static关键字进行修饰)
abstract class Fruit{ //定义抽象类
//定义颜色成员变量
public String color;
//定义构造方法
public Fruit(){
color = "red";
}
//定义抽象方法
public abstract void harvest();
}
class Apple extends Fruit{
public void harvest(){
//输出字符串:"苹果已经收获!"
System.out.println("苹果已经收获!");
}
}
class Orange extends Fruit{
public void harvest(){
//输出字符串:"桔子已经收获!"
System.out.println("桔子已经收获");
}
}
public class Farm{
public static void main(String[] args){
System.out.println("调用Apple类的harvest()方法的结果:");
//声明Apple类的一个对象apple,并为其分配内存
Apple apple = new Apple();
apple.harvest();
System.out.println("调用Orange类的harvest()方法的结果:");
//声明Orangle类的一个对象orangle,并为其分配内存
Orange orange = new Orange();
orange.harvest();
}
}
运行结果图

JAVA进阶2的更多相关文章
- Java 进阶 hello world! - 中级程序员之路
Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...
- Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式
原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...
- Java线程间通信方式剖析——Java进阶(四)
原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...
- Java进阶(三)多线程开发关键技术
原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...
- 当我们说线程安全时,到底在说什么——Java进阶系列(二)
原创文章,同步发自作者个人博客,转载请以超链接形式在文章开头处注明出处http://www.jasongj.com/java/thread_safe/ 多线程编程中的三个核心概念 原子性 这一点,跟数 ...
- Java进阶03 IO基础
链接地址:http://www.cnblogs.com/vamei/archive/2013/04/11/3000905.html 作者:Vamei 出处:http://www.cnblogs.com ...
- Java进阶01 String类
链接地址:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 作者:Vamei 出处:http://www.cnblogs.com ...
- 从ConcurrentHashMap的演进看Java多线程核心技术 Java进阶(六)
本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线程不安全行为.同时结合源码从数据结构,寻址方式,同步方式,计算size等角度分析了JDK 1.7和JDK 1. ...
- Java进阶(七)正确理解Thread Local的原理与适用场景
原创文章,始自发作者个人博客,转载请务必将下面这段话置于文章开头处(保留超链接). 本文转发自技术世界,原文链接 http://www.jasongj.com/java/threadlocal/ Th ...
- Java进阶(四十七)Socket通信
Java进阶(四十七)Socket通信 今天讲解一个 Hello Word 级别的 Java Socket 通信的例子.具体通讯过程如下: 先启动Server端,进入一个死循环以便一直监听某端口是 ...
随机推荐
- IDEA和WebStorm破解教程--激活n年(随时更新)
首先,打开蓝雨的官网--->http://idea.lanyus.com/,找到这个jar包 之后,去官网下载IDEA--->https://www.jetbrains.com/idea ...
- 机器学习算法 Python&R 速查表
sklearn实战-乳腺癌细胞数据挖掘( 博主亲自录制) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...
- docker swarm 简易版
节点名称 相关服务 ip地址 master1/node1 swarm manager(master) / consul 192.168.132.131 master2/node2 swarm mana ...
- HDFS集群常见报错汇总
HDFS集群常见报错汇总 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.DataXceiver error processing WRITE_BLOCK operation 报 ...
- OS + RedHat 6.3 x64 NFS / mount.nfs: access denied by server while mounting
s Linux mount/unmount命令(转) https://www.cnblogs.com/xd502djj/p/3809375.html 问题2:NFS配置项no_root_squash和 ...
- layui(八)——轮播图常见用法总结
carousel 是 layui 2.0 版本中新增的全新模块,主要适用于跑马灯/轮播等交互场景.它可以满足任何类型内容的轮播式切换操作,更可以胜任 FullPage (全屏上下轮播)的需求,简洁而不 ...
- Vue项目搭建
1.环境搭建 安装node 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ 安装cnpm npm install -g cnpm --registry=https:// ...
- 关于Ant脚本
在开发中,一个项目要经历单元测试l,集成测试,系统测试,测试过程中可能要不断修改代码,Ant脚本,通过一个xml文件,封装一系列繁琐又常用的操作,通过Ant指令执行xml脚本来批处理创建删除任务,编译 ...
- 转---redshift database ---学习
摘自他人 前沿 根据最近一段时间对redshift的研究,发现一些特性比较适合我们当前的业务. 1 比如它的快速恢复能力,因为这一点,我们可以尽量在redshit里面存放一定生命周期的数据,对过期的数 ...
- json 模块 与 pickle 模块
1 import json 3 dic={'name':'alvin','age':23,'sex':'male'} 4 print(type(dic))#<class 'dict'> 6 ...