间歇性混吃等死,持续性踌躇满志系列-------------第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的更多相关文章

  1. Java 进阶 hello world! - 中级程序员之路

    Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...

  2. Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...

  3. Java线程间通信方式剖析——Java进阶(四)

    原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...

  4. Java进阶(三)多线程开发关键技术

    原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...

  5. 当我们说线程安全时,到底在说什么——Java进阶系列(二)

    原创文章,同步发自作者个人博客,转载请以超链接形式在文章开头处注明出处http://www.jasongj.com/java/thread_safe/ 多线程编程中的三个核心概念 原子性 这一点,跟数 ...

  6. Java进阶03 IO基础

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/11/3000905.html 作者:Vamei 出处:http://www.cnblogs.com ...

  7. Java进阶01 String类

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 作者:Vamei 出处:http://www.cnblogs.com ...

  8. 从ConcurrentHashMap的演进看Java多线程核心技术 Java进阶(六)

    本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线程不安全行为.同时结合源码从数据结构,寻址方式,同步方式,计算size等角度分析了JDK 1.7和JDK 1. ...

  9. Java进阶(七)正确理解Thread Local的原理与适用场景

    原创文章,始自发作者个人博客,转载请务必将下面这段话置于文章开头处(保留超链接). 本文转发自技术世界,原文链接 http://www.jasongj.com/java/threadlocal/ Th ...

  10. Java进阶(四十七)Socket通信

    Java进阶(四十七)Socket通信   今天讲解一个 Hello Word 级别的 Java Socket 通信的例子.具体通讯过程如下: 先启动Server端,进入一个死循环以便一直监听某端口是 ...

随机推荐

  1. python3.5和python3.6关于json模块的区别

    python3.5中 无法反序列化bytes数据必须decode成str才可以 >>> import json >>> a = b'{"username& ...

  2. python自动化开发-[第七天]-面向对象

    今日概要: 1.继承 2.封装 3.多态与多态性 4.反射 5.绑定方法和非绑定方法 一.新式类和经典类的区别 大前提: 1.只有在python2中才分新式类和经典类,python3中统一都是新式类 ...

  3. sklearn-标准化标签LabelEncoder

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  4. OS + Ubuntu ARM Android

    s 1. Ubuntu 18.04 ISO的下载路径参考:https://www.ubuntu.com/download/server/arm 2. Android SDK下载链接:https://p ...

  5. NGINX X-Forwarded-For / XFF / xforword

    s https://en.wikipedia.org/wiki/X-Forwarded-For http://www.cnblogs.com/yihang/archive/2010/12/19/191 ...

  6. java用流的方式加载图片

    前端: <img ng-show="photo" class="vertical_b" id="photoImg" src=" ...

  7. 14.命令模式(Command Pattern)

    耦合与变化:    耦合是软件不能抵御变化灾难的根本性原因.不仅实体对象与实体对象之间存在耦合关系,实体对象与行为操作之间也存在耦合关系.                                ...

  8. 8.Hystrix-Feign配置服务降级

    项目中用到Feign调用服务端方法并做服务降级处理 1.application.properties配置: feign.hystrix.enabled=true 2.pom: <!--feign ...

  9. UVA - 11732 "strcmp()" Anyone? (trie)

    https://vjudge.net/problem/UVA-11732 题意 给定n个字符串,问用strcmp函数比较这些字符串共用多少次比较. strcmp函数的实现 int strcmp(cha ...

  10. ArcGis Python脚本——批量删除字段

    注意,ArcGis中shp属性表至少要保留除OID(FID).Shape之外的1个字段. 例:批量删除“省级行政区域”除“FID”.“Shape”.“Area”之外的字段. import arcpy ...