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 ...
随机推荐
- UVA11324 The Largest Clique(DP+缩点)
题意:给一张有向图G,求一个结点数最大的结点集,使得该结点中任意两个结点 u 和 v满足:要么 u 可以到达 v, 要么 v 可以到达 u(u 和 v 相互可达也可以). 分析:”同一个强连通分量中的 ...
- jsf服务器端验证用户输入
服务器端验证用户输入数据步骤 1 html页面上插入要输入数据控件 <h:inputText size="10" value="#{commodityBean.fo ...
- rand(7) 到rand(10)
说有一个rand()函数,等概率生成1-7的随机数. 利用这个函数,构造一个能生成1-10的随机数的函数; //意思大家都懂就好,没说清的就按照想象的走 我想只要输出的10个数概率相同就好,从宏观上看 ...
- thinkphp3.2.3 版本使用redis缓存的时候无法使用认证
我在使用thinkphp3.2.3的时候 发现如果是使用redis缓存 设置了认证的redis能连接成功 却无法 set 操作 ,检查发现是没有认证导致的 $redis->auth这一步没有, ...
- 在java中高效的计数器
在编程中,经常会用到HashMap作为计数器,本文简单介绍三种实现方式 第一种,最直观的计数器. public void naiveCounter(String sArr[]) { HashMap&l ...
- [2014.5.22][UBUNTU]Ubuntu与Windows系统时间不同步的问题
安装Ubuntu+Windows双系统时会遇到Windows和Ubuntu系统时间不同步的问题,这是由于Windows系统默认读取主板bios等硬件系统时间作为OS的当地时间;而MAc,Linux类的 ...
- Android多语言支持以及各国语言Values文件夹命名规则
创建好的项目工程由于需求 需要做多国语言的支持 下面介绍怎么快捷的创建文件夹 建好一个android 的项目后,默认的res下面 有layout.values.drawable等目录 这些都是程序默 ...
- 【28】避免返回handles指向对象内部成分
1.为什么? 很简单,你指向箱子里面的一个物品,使用这个物品.但是箱子不受你控制,箱子销毁了,里面的物品也会随之销毁.那么这种情况下,你指向的就是一堆垃圾,你还在使用这个物品,导致未定义的行为.
- 跟我一起学extjs5(05--主界面上增加顶部和底部区域)
跟我一起学extjs5(05--主界面上增加顶部和底部区域) 这一节为主界面加一个顶部区域和底部区域. 一个管理系统的界面能够粗分为顶部标题部分.中间数据展示和处理的部分.底部备注和状 ...
- linux 查看并终止进程
1,查看port被那个进程占用 比如: netstat -anp | grep 1160 ps:查看port1169被那个进程占用. 2.查找进程 比如 :ps -ef | grep 'tomcat' ...