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 ...
随机推荐
- vijosP1447 开关灯泡
vijosP1447 开关灯泡 链接:https://vijos.org/p/1447 [思路] 数学+高精度. 分析题目:题中有言,i时刻将其所有倍数的灯熄灭,由此得知一个数有多少个倍数就会被操作多 ...
- shell常识总结
#!/bin/bash cmd="ls -lt | grep ^d | awk 'NR==1 {print $9}'" $cmd 这是一个获取文件夹名字的脚本,但是却提示: ls: ...
- 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 ...
- php学习小记1
1.回调函数 c语言中的回调函数:通过函数指针调用的函数.将函数a的指针(地址)作为参数传递给另一个函数b,当函数a的指针被b用来调用a时,这就是回调函数,在特定的事件或条件发生时,由另外一方调用,用 ...
- 【转】Vim 常用命令总结
使用 Vim 的时间不长,但如今已经离不开熟悉的 Vim 编辑模式了. Vim 的学习曲线是非常陡的,一开始学习的时候,面对很多的操作命令要去记住,常常望而却步. 其实,只要记住一些常用的命令,加之在 ...
- oc学习之路----QQ聊天界面
用到的技术:自定义cell,通知机制,代理模式 transform 1.自定义cell(通过代码自定义cell) ①首先新建一个类继承UITableViewCell ②重写initWithStyle: ...
- jquery判断文本域长度
<div id="result">您还可以输入100字</div> <textarea name="content" id=&qu ...
- 【腾讯Bugly干货分享】手游热更新方案xLua开源:Unity3D下Lua编程解决方案
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/2bY7A6ihK9IMcA0bOFyB-Q 导语 xL ...
- GridControl 选择列、复选框全选(下)
功能: 删除选中行 前台调用: string str=""; GridDelete(gv, "chk", out str); MessageBox ...
- Asp.net Mvc 自定义Session (二)
在 Asp.net Mvc 自定义Session (一)中我们把数据缓存工具类写好了,今天在我们在这篇把 剩下的自定义Session写完 首先还请大家跟着我的思路一步步的来实现,既然我们要自定义Ses ...