10/6-10/12 java学习总结(没有课堂的课后学习总结) &实验总
实验四 类的继承
- 实验目的
- 理解抽象类与接口的使用;
- 了解包的作用,掌握包的设计方法。
- 实验要求
- 掌握使用抽象类的方法。
- 掌握使用系统接口的技术和创建自定义接口的方法。
- 了解 Java 系统包的结构。
- 掌握创建自定义包的方法。
- 实验内容
(一)抽象类的使用
- 设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
注:三角形面积s=sqrt(p*(p-a)*(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
2.编程技巧
(1) 抽象类定义的方法在具体类要实现;
(2) 使用抽象类的引用变量可引用子类的对象;
(3) 通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。
(二)使用接口技术
1定义接口Shape,其中包括一个方法size(),设计“直线”、“圆”、类实现Shape接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。
- 编程技巧
(1) 接口中定义的方法在实现接口的具体类中要重写实现;
(2) 利用接口类型的变量可引用实现该接口的类创建的对象。
package NAME; import java.util.*; public class FIRST{ public static void main(String[] args){ triangle tr=new triangle(5,12,13); rectangle re=new rectangle(8,8); circle cr=new circle(8); tr.output1(); re.output2(); cr.output3(); } } abstract class Shape{ public abstract double area(); } class triangle extends Shape { private double a,b,c,d; public triangle(double a,double b,double c) { setA(a); setB(b); setC(c); setD((a+b+c)/2); } public double area() { return Math.sqrt(getD()*(getD()-getA())*(getD()-getB())*(getD()-getC())); } public double getA() { return a; } public void setA(double a) { this.a = a; } public double getB() { return b; } public void setB(double b) { this.b = b; } public double getC() { return c; } public void setC(double c) { this.c = c; } public double getD() { return d; } public void setD(double d) { this.d = d; } public void output1() { System.out.println(area()); } } class rectangle extends Shape{ private double a,b; public double area() { return a*b; } public rectangle(double a,double b) { setA(a); setB(b); } public double getA() { return a; } public void setA(double a) { this.a = a; } public double getB() { return b; } public void setB(double b) { this.b = b; } public void output2() { System.out.println(area()); } } class circle extends Shape{ private double radius; public double area() { return 2*(Math.PI*Math.pow(radius, 2)); } public double getRadius() { return radius; } public void setRadius(double radius) { this.radius = radius; } public circle(double radius) { setRadius(radius); } public void output3() { System.out.println(area()); } }
package id; import java.util.Scanner; interface shape{ public void size(); } class yuan implements shape{ private double m; public double getBj() { return m; } public void setBj(double bj) { this.m = bj; } public yuan(double bj) { setBj(bj); } public void size() { System.out.println("圆的面积为:"+ Math.PI*Math.pow(m, 2)); System.out.println("圆的周长为:"+ Math.PI*2*m); } } class line implements shape{ private double x1,y1,x2,y2; public double getX1() { return x1; } public void setX1(double x1) { this.x1=x1; } public double getY1() { return y1; } public void setY1(double y1) { this.y1=y1; } public double getX2() { return x2; } public void setX2(double x2) { this.x2=x2; } public double getY2() { return y2; } public void setY2(double y2) { this.y2=y2; } public line(double x1,double y1,double x2,double y2) { this.x1=x1; this.x2=x2; this.y1=x2; this.y2=y2; } public void size() { System.out.println("直线的长度:"+ Math.sqrt(Math.pow(x1-x2, 2)+Math.pow(y1-y2, 2))); } } public class hope { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("输入圆的半径:"); double bj=sc.nextDouble(); yuan p1=new yuan(bj); p1.size(); System.out.println("输入直线两点端点的坐标:"); double x1=sc.nextDouble(); double y1=sc.nextDouble(); double x2=sc.nextDouble(); double y2=sc.nextDouble(); line p2=new line(x1,y1,x2,y2); p2.size(); } }
抽象类
抽象类和接口的区别
1. 抽象类中的方法可以有能实现方法的具体功能方法体,但是接口中不能有方法体。
2. 抽象类中的成员变量不限制类型,而接口中的成员变量只能是 public static final 类型的。
3. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
object类
Object类是所有类的父类,声明一个Object类的作用就是可以传递任何类型的类来使用。
Object是所有类的父类,它有很多类对象会用到的方法,例如比较常用的toString 、equals。
写封装方法的时候不确定传进来的值的类型,就可以使用Object作为类
接口
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
实现接口:
class 子类 implements 接口A,接口B,...{}
继承抽象类实现接口 :
class 子类 extends 抽象类 implements 接口A,接口B,...{}
接口的继承:
interface 子接口 extends 父接口A,父接口B,...{}
自我总结:昨天把上次没有听课讲的内容补回来了,这次作业基本上没什么问题,除了那个静态变量那里出了一点问题,多看了一下就解决了