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();

	}

}
时间: 2024-08-07 02:45:47

java新手笔记19 抽象类的相关文章

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

1.抽象类 package com.yfs.javase; //信模板 public abstract class Templater { public abstract String toName() ; public abstract String fromName(); public abstract String getContent(); public void show() { System.out.println("尊敬的" + toName()); System.out

Java学习笔记19

Objects是Java 7新增的一个工具类,它提供了一些工具方法来操作对象,这些工具方法大多是"空指针"安全的. Objects实现的方法如下: (1)hasCode(Object)方法在源码中是如何实现的: public static int hashCode(Object o) { return o != null ? o.hashCode() : 0; } 原来在hasCode(Object)方法中多做了一层判断,如果这个对象为null 的话,就返回一个int型的0给它,相反这

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

1.Mouse package com.yfs.javase; public class Mouse { private int index = 1; private boolean isLive = false; //跳出方法 同步锁 public synchronized void jump() { while(true) { if(!isLive ) { System.out.println("跳出第 " + index + " 田鼠"); //修改田鼠状态

java新手笔记34 连接数据库

1.JdbcUtil package com.yfs.javase.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JdbcUtil { private static final String driver = "sun.j

我的java学习笔记(19)关于代理

1.利用代理可以在运行时创建一个实现了一组给定接口的新类.这种功能只有在编译时无法确定需要实现哪个接口时才有必要使用. 2.调用处理器是实现了InvacationHandler接口的类对象. 3.无论何时调用代理对象的方法,调用处理器的invoke方法都会被调用,并向其传递Method对象和原始的调用参数.调用处理器必须给出处理调用的方式. 4.想要创建一个代理对象,需要使用Proxy类的newProxyInstance方法. 该方法的三个参数: a.一个类加载器 b.一个Class对象数组 c

java新手笔记10 构造器

1.摇奖小程序 package com.yfs.javase; import java.io.IOException; import java.nio.CharBuffer; import java.util.Random; public class Demo1 { /** * 模拟摇奖 */ public static void main(String[] args) { Random ran = new Random(); int[] a = new int[7]; System.out.p

阿花宝宝 Java基础笔记 之 抽象类与抽象方法

一 . 抽闲累和抽象方法   1.  抽象类中的抽象方法必须被子类实现  除非子类也是抽象的.   2.抽象类不能呗实例化  但是抽象类的引用可以志向一个具体实现他的子类对象   3.  抽象类中的有构造方法  不能通过实例化的方式调用 但是可以在创建子类对象时候调用  所以说抽象累的构造方法是为让子类调用的    4. 抽象类中的抽象方法不可能 被调用  因为不能有一个抽象类的对象(抽象类不能被实例化)   5. 抽象类中可以有普通成员(变量 方法)  静态方法  但是子类的中同名的静态方法不

java新手笔记15 多态

1.Animal类 package com.yfs.javase; public class Animal { public void cry() { System.out.println("动物叫..."); } } 2.Dog/Cat/Bird类 package com.yfs.javase; public class Dog extends Animal { public void cry() { System.out.println("汪 汪..."); }

java新手笔记1

//Hello.java文件 //类声明 public class Hello{ //声明方法 main程序入口 public static void main (String[] args) { System.out.println("Hello World!"); } } //编译命令 C:\>javac C:\Users\Administrator\Desktop\Hello.java //javac 路径+文件名.java //javac -d D:\ C:\Users\