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端,进入一个死循环以便一直监听某端口是 ...
随机推荐
- CF Educational Codeforces Round 57划水记
因为是unrated于是就叫划水记了,而且本场也就用了1h左右. A.B:划水去了,没做 C:大水题,根据初三课本中圆的知识,可以把角度化成弧长,而这是正多边形,所以又可以化成边数,于是假设读入为a, ...
- C++基础知识--DAY2
昨天我们主要是讲的C++相对于C语言的变化,结尾讲述了一点引用的基础知识,要明白,引用就是对一个变量取别名,在C++中需要用指针的都可以思考是否可以用引用来代替. 1. 常引用 常引用(const s ...
- java eclipse 安卓环境配置
adt下载地址 http://www.runoob.com/w3cnote/android-tutorial-eclipse-adt-sdk-app.html 我的云 安卓学习 java htt ...
- POJ 3713 Transferring Sylla (三联通分量)
Transferring Sylla Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3533 Accepted: 988 ...
- phpmyadmin拿webshell
思路:就是利用mysql的一个日志文件.这个日志文件每执行一个sql语句就会将其执行的保存.我们将这个日志文件重命名为我们的shell.php然后执行一条sql带一句话木马的命令.然后执行菜刀连接之! ...
- C#设计模式 —— 依赖注入
在说依赖注入之前,先了解下什么是接口. 接口的相关规则: 1. 接口是一个引用类型,通过接口可以实现多重继承. 2. C#中接口的成员不能有new.public.protected.internal. ...
- LightGBM 调参方法(具体操作)
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- 本地服务器上挂载A目录到B目录
原因: 由于某个分区满了,切磁盘无法扩大分区空间,但是项目依赖该分区,需要继续像该分区存储文件,此时其他分区还有很大的空间,使用挂载的方式,在有空间的分区创建新目录,将新目录挂载到源目录下即可. 执行 ...
- 腾讯云ping wget yum 常用命令设置问题
遇到ping wget yum 命令不能正常使用的情况是因为腾讯云有些配置: root执行如下即可: wget -q http://mirrors.tencentyun.com/install/sof ...
- 网络编程基础【day09】:socket接收大数据(五)
本节内容 1.概述 2.socket接收大数据 3.中文字符的坑 一.概述 上篇博客写到了,就是说当服务器发送至客户端的数据,大于客户端设置的数据,则就会把数据服务端发过来的数据剩余数据存在IO缓冲区 ...