java新手笔记19 抽象类
1.Shap
package com.yfs.javase;
public class Shape /*extends Object */{ //默认继承object object方法全部继承
//计算面积方法
public double getArea() {//代码完全没用
System.out.println("计算面积");
return 0;
}
}
2.Circle
package com.yfs.javase;
public class Circle extends Shape {
private double r;
public Circle(double r) {
this.r = r;
System.out.println("创建圆形面积");
}
// public double getArea() {//覆盖父类的方法
// System.out.println("计算圆形面积...");
// return 3.14 * r * r;
// }
}
3.Triangle
package com.yfs.javase;
public class Triangle extends Shape {
private double height;
private double width;
public Triangle(double height, double width) {
this.height = height;
this.width = width;
System.out.println("创建三角形面积");
}
public double getArea() {
System.out.println("计算三角形面积...");
return 1.0 / 2 * width * height;
}
}
4.Rectangle
package com.yfs.javase;
public class Rectangle extends Shape {
private double width;
private double length;
public Rectangle(double width, double length) {
this.width = width;
this.length = length;
System.out.println("创建矩形面积");
}
public double getArea() {
System.out.println("计算矩形面积...");
return width * length;
}
}
5.shap测试
package com.yfs.javase;
public class ShapeTest {
public static void main(String[] args) {
Shape[] shapes = new Shape[10];
Shape s = new Shape();//创建这个类对象
s.getArea();
}
}
6.抽象类
package com.yfs.javase;
//类中有抽象方法 类必须是抽象的
public abstract class Demo1 { public abstract void method(); //没有方法体 抽象方法
public abstract double method1(int a, String name);
public abstract double method1(String name,int a);
//抽象类可以声明普通方法 子类可以继承
public void method2() {
System.out.println("call method2()... ");
}
//普通方法是否可调用抽象方法
public void method3() {
method();//不会调用父类的方法 调用子类对象的方法 多态
}
}
abstract class Child extends Demo1 {
@Override
public void method() {
System.out.println("call () .......");
}
}
class Son extends Child { @Override
public double method1(int a, String name) {
// TODO Auto-generated method stub
return 0;
} @Override
public double method1(String name, int a) {
// TODO Auto-generated method stub
return 0;
} } class Children extends Demo1 {
//子类继承抽象类 必须覆盖抽象方法
@Override
public void method() {
System.out.println("子类覆盖的抽象方法..."); } @Override
public double method1(int a, String name) {
System.out.println("name = " + name);
System.out.println("a = " + a);
return 0;
} @Override
public double method1(String name, int a) {
// TODO Auto-generated method stub
return 0;
} public static Demo1 test (Demo1 d) { return new Children();
} }
7.抽象类测试
package com.yfs.javase;
public class Demo1Test {
/**
* 1.抽象类不能实例化
* 2.子类必须覆盖抽象类的抽象方法
*/
public static void main(String[] args) {
Demo1 d1;//声明引用
//创建对象
//d1 = new Demo1();//抽象类不能实例化
d1 = new Children();
d1.method();
d1.method2();
Children c1 = new Children();
c1.method2();
System.out.println("============================");
d1.method3();
c1.method3();
d1.method1(15, "影分身");
Demo1 d2 = Children.test(c1);
Demo1 c2 = Children.test(d1);
d2.method2();
c2.method2();
}
}
java新手笔记19 抽象类的更多相关文章
- java新手笔记20 抽象类模板(letter)
1.抽象类 package com.yfs.javase; //信模板 public abstract class Templater { public abstract String toName( ...
- JAVA自学笔记19
JAVA自学笔记19 1.集合总结 Collection(单列集合) List(有序可重复) ArrayList:底层数据结构是数组 ,查询快,增删慢.线程不安全,效率高 Vector:底层数据结构是 ...
- java新手笔记24 Math/String对象
1.Math package com.yfs.javase; public class MathDemo { public static void main(String[] args) { int ...
- Java学习笔记之抽象类与接口
抽象类(abstract) 抽象类概述:一个类被abstract修饰表示这个类是抽象类, 自己定义方法但是不实现方法,后代去实现 抽象方法: 一个方法被abstract修饰表示这个方法是抽象方法 ...
- 0026 Java学习笔记-面向对象-抽象类、接口
抽象方法与抽象类 抽象方法用abstract修饰,没有方法体部分,连花括号都不能有: 抽象方法和抽象类都用abstract修饰 包含抽象方法的类一定是抽象类:但不包含抽象方法的类也可以是抽象类 不能创 ...
- JAVA新手笔记 Intent对象和Bundle对象
Intent对象和Bundle对象 功能主要是在 MainActivity中定义了2个EditText,当用户输入内容,把他传入到第二个活动, 自己新创的活动中,MyActivity中 放在MainA ...
- java新手笔记34 连接数据库
1.JdbcUtil package com.yfs.javase.jdbc; import java.sql.Connection; import java.sql.DriverManager; i ...
- java新手笔记33 多线程、客户端、服务器
1.Mouse package com.yfs.javase; public class Mouse { private int index = 1; private boolean isLive = ...
- java新手笔记32 jdk5新特性
1.for package com.yfs.javase; import java.awt.Color; import java.util.Calendar; import java.util.Has ...
随机推荐
- Windows Azure 的磁盘管理相关概念
在 Windows Azure 的虚拟机中,磁盘有多种使用方式.操作系统磁盘是用来为虚拟机提供操作系统的虚拟硬盘.数据磁盘是附加到虚拟机上用来存储应用程序数据的 VHD. 根据应用程序的需要,可从多种 ...
- 使用 Windows PowerShell 管理Windows Azure映像
你可以使用 Azure PowerShell 模块中的 cmdlet 管理可供你的 Azure 订阅使用的映像.这包括 Azure 提供的映像以及你上载的映像.对于某些映像任务,你还可以使用 Azur ...
- 解决Hadoop-Eclipse-Plugin放在Plugin目录下没反应的问题
有时候自己编译或者下载的Hadoop-Eclipse-Plugin放到Eclipse的Plugin目录下面,启动Eclipse没有反应,即看不到小象和Map/Reduce视图.可以通过查看Eclips ...
- HDU-1255 覆盖的面积 覆盖的矩形面积并
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 需要保存区间覆盖线>=2的线段的长度,根据情况来更新... //STATUS:C++_AC ...
- POJ2923--Relocation(01背包+状压dp)
果然对状压DP,我根本就不懂=.= /************************************************** Problem: 2923 User: G_lory Mem ...
- 安装 Linux 与 Windows 10 双系统,你需要了解的一切
该选Windows 10还是Linux Mint?鱼与熊掌当然可以兼得,但咱们得掌握点小技巧才能顺利搞定. Windows 10绝不是唯一一款值得我们安装在自己计算机之上的免费操作系统.Linux只靠 ...
- SNMP: Simple? Network Management Protocol(转)
转自:http://www.rane.com/note161.html An SNMP Overview The Message Format The Actual Bytes Introductio ...
- golang中赋值string到array
要把一个string赋值给一个array,哥哥遇到一个纠结的困难,研究一番,发现主要原因是array和slice在golang里不是一个东西,本文提供两种解决方案. 在网络编程中network pac ...
- JBPM学习(五):流程变量
1.启动流程实例 // 启动流程实例 @Test public void startProcessInstance() { // 使用指定key的最新版本的流程定义启动流程实例 ProcessInst ...
- UML 2中结构图的介绍
原文: http://www.ibm.com/developerworks/cn/rational/rationaledge/content/feb05/bell/ 这是关于统一建模语言.即UML 里 ...