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端,进入一个死循环以便一直监听某端口是 ...
随机推荐
- 第三十五节,目标检测之YOLO算法详解
Redmon, J., Divvala, S., Girshick, R., Farhadi, A.: You only look once: Unified, real-time object de ...
- TestNg 4.组测试中的方法分组测试
看以下代码: package com.course.testng.groups; import org.testng.annotations.AfterGroups; import org.testn ...
- 字符类型char、字符串与字符数组、字符数组与数据数组区别
字符类型是以ASCII码值运算的:小写字母比相应的大写字母大32,其中A=65,a=97 Esc键 27(十进制).'\x1B'(十六进制).'\33'(八进制) 转义字符:\0 空字符 AS ...
- 通过$.ajax设置预加载动画加强用户体验
以前在jquery请求数据时,总喜欢用简洁的$.get与$.post提交数据,但有时发现由于网速的问题,有些时候网站加载js获得的数据会非常慢,于是就想能不能请求数据中间,给加载数据一个提示,增加用户 ...
- Oracle提权
1.创建JAVA包 select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION;begin execute immed ...
- BZOJ2006 ST表 + 堆
https://www.lydsy.com/JudgeOnline/problem.php?id=2006 题意:在长度N的序列中求K段长度在L到R之间的区间,使得他们的和最大 很容易想到要求一个前缀 ...
- Ansible Callback
非api模式下自定义callback ansible.cfg中开启callback功能 callback_plugins = /usr/share/ansible/plugins/callback # ...
- Ambari集成Kerberos报错汇总
Ambari集成Kerberos报错汇总 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看报错的配置信息步骤 1>.点击Test Kerberos Client,查看相 ...
- Centos7下安装OpenLDAP+Phpldapadmin及主主同步
1.环境介绍及初始化准备 server1:172.16.138.87 openldap01 server2:172.16.138.88 openldap02 配置yum源 wget -O /etc/y ...
- oracle数据泵导入导出命令
1.在PL/SQL的界面,找到Directories文件夹,找到目录文件的路径 2.通过SSH进入服务器 找到相应的路径 cd /u01/oracle/dpdir 输入指令 df -h 查看资源使 ...