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 抽象类的更多相关文章

  1. java新手笔记20 抽象类模板(letter)

    1.抽象类 package com.yfs.javase; //信模板 public abstract class Templater { public abstract String toName( ...

  2. JAVA自学笔记19

    JAVA自学笔记19 1.集合总结 Collection(单列集合) List(有序可重复) ArrayList:底层数据结构是数组 ,查询快,增删慢.线程不安全,效率高 Vector:底层数据结构是 ...

  3. java新手笔记24 Math/String对象

    1.Math package com.yfs.javase; public class MathDemo { public static void main(String[] args) { int ...

  4. Java学习笔记之抽象类与接口

    抽象类(abstract) 抽象类概述:一个类被abstract修饰表示这个类是抽象类, 自己定义方法但是不实现方法,后代去实现 抽象方法:   一个方法被abstract修饰表示这个方法是抽象方法 ...

  5. 0026 Java学习笔记-面向对象-抽象类、接口

    抽象方法与抽象类 抽象方法用abstract修饰,没有方法体部分,连花括号都不能有: 抽象方法和抽象类都用abstract修饰 包含抽象方法的类一定是抽象类:但不包含抽象方法的类也可以是抽象类 不能创 ...

  6. JAVA新手笔记 Intent对象和Bundle对象

    Intent对象和Bundle对象 功能主要是在 MainActivity中定义了2个EditText,当用户输入内容,把他传入到第二个活动, 自己新创的活动中,MyActivity中 放在MainA ...

  7. java新手笔记34 连接数据库

    1.JdbcUtil package com.yfs.javase.jdbc; import java.sql.Connection; import java.sql.DriverManager; i ...

  8. java新手笔记33 多线程、客户端、服务器

    1.Mouse package com.yfs.javase; public class Mouse { private int index = 1; private boolean isLive = ...

  9. java新手笔记32 jdk5新特性

    1.for package com.yfs.javase; import java.awt.Color; import java.util.Calendar; import java.util.Has ...

随机推荐

  1. vijosP1447 开关灯泡

    vijosP1447 开关灯泡 链接:https://vijos.org/p/1447 [思路] 数学+高精度. 分析题目:题中有言,i时刻将其所有倍数的灯熄灭,由此得知一个数有多少个倍数就会被操作多 ...

  2. shell常识总结

    #!/bin/bash cmd="ls -lt | grep ^d | awk 'NR==1 {print $9}'" $cmd 这是一个获取文件夹名字的脚本,但是却提示: ls: ...

  3. Apple LLVM 6.0 Warning: profile data may be out of date

    I have no clue what this meant, so I googled the problem. I only ended up with some search results s ...

  4. php学习小记1

    1.回调函数 c语言中的回调函数:通过函数指针调用的函数.将函数a的指针(地址)作为参数传递给另一个函数b,当函数a的指针被b用来调用a时,这就是回调函数,在特定的事件或条件发生时,由另外一方调用,用 ...

  5. 【转】Vim 常用命令总结

    使用 Vim 的时间不长,但如今已经离不开熟悉的 Vim 编辑模式了. Vim 的学习曲线是非常陡的,一开始学习的时候,面对很多的操作命令要去记住,常常望而却步. 其实,只要记住一些常用的命令,加之在 ...

  6. oc学习之路----QQ聊天界面

    用到的技术:自定义cell,通知机制,代理模式 transform 1.自定义cell(通过代码自定义cell) ①首先新建一个类继承UITableViewCell ②重写initWithStyle: ...

  7. jquery判断文本域长度

    <div id="result">您还可以输入100字</div> <textarea name="content" id=&qu ...

  8. 【腾讯Bugly干货分享】手游热更新方案xLua开源:Unity3D下Lua编程解决方案

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/2bY7A6ihK9IMcA0bOFyB-Q 导语 xL ...

  9. GridControl 选择列、复选框全选(下)

    功能:        删除选中行 前台调用: string str=""; GridDelete(gv, "chk", out str); MessageBox ...

  10. Asp.net Mvc 自定义Session (二)

    在 Asp.net Mvc 自定义Session (一)中我们把数据缓存工具类写好了,今天在我们在这篇把 剩下的自定义Session写完 首先还请大家跟着我的思路一步步的来实现,既然我们要自定义Ses ...