下面展示一些 图形类,定义一个图形类,
里面有两个方法一个是求面积,一个是求周长;
定义一个矩形类,继承自图形类,重写方法,实现求矩形的面积和周长
public class Graphic{
public double area(double a , double b) {
return 0;
}
public double perimeter(double a ,double b) {
return 0;
}
}
class Rect extends Graphic{
@Override
public double area(double a, double b) {
return a*b;
}
@Override
public double perimeter(double a, double b) {
return (a+b)*2;
}
}
// Graphic graphic = new Rect(); //多态
// double area = graphic.area(10, 5); //调方法看new
// double p = graphic.perimeter(10, 8);
2.下面展示一些 `定义一个数组工具类,里面包含为数组排序,找出数组中最大元素,获取数组长度等方法。
public class ArrayUtil {
/*
* 数组的拷贝(新new一个)和扩容
* 1.形参需要那些?
* 1.需要提供被拷贝的数组
* 2.新数组的长度
* 2.需不需要返回值?返回值类型是什么?
* 需要返回值,拷贝扩容完的新数组,需要返回给外界
*
*/
public int[] copyOf(int[] array, int newLength ) {
//优先处理特殊情况
//确保原数组是可用数组
if(array == null || array.length == 0) { //原数组正常
return null;
}
if(newLength < 0) { //保证新数组长度正常
newLength = -newLength;
//return null;
}
//防止拷贝期间数组下标越界,使用较小的长度
int min = array.length > newLength ? newLength : array.length;
//1.创建新数组
int[] newArray = new int[newLength];
//2.原数组中的元素拷贝到新数组
for(int i = 0; i< min;i++) { //将数组的数字扔到旧数组,min 两个里面叫小的,防止越界
newArray[i] = array[i]; //第i个位置赋给新数组的i位置,min 两个里面叫小的,防止越界
}
//返回新数组
return newArray;
}
//打印数组
public void print(int[] array) { //封装成方法
if(array == null) {
System.out.println("null");
return;
}
if(array.length == 0) {
System.out.println("[]");
return;
}
System.out.print("[");
for(int i = 0; i<array.length; i++) {
if(i != array.length-1) { // 不是最后一个元素[1,2,3,4,最后一个元素进去
System.out.print(array[i] + ", ");
}else {
System.out.print(array[i] + "] ");
}
}
System.out.println();
} //只要没有new 就是用的同一个内存空间 int[] a = array;
public int[] sort(int[] array) {
array = this.copyOf(array, array.length);//有新数组,两个空间 ,只要有new 就有新的内存空间
if(array == null || array.length == 0 ||array.length ==1 ){
return array;
}
for(int i = 0; i< array.length-1 ; i++) {
for(int j = 0; j < array.length-1-i;j++) {
if(array[j] > array[j+1]) {
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
return array;
}
//获取长度
public int size(int[] array) {
if(array == null) { //引用数据类型,需要考虑非空
return -1;
}
return array.length;
}
}
ArrayUtil arrayUtils = new ArrayUtil();
// int[] array = {1,2,3,4 };
// int[] arr = arrayUtils.copyOf(array, array.length + 3);
// System.out.println(array);
// System.out.println(arr); //新数组地址不一样
//
// arrayUtils.print(arr); // 打印元素
int[] arr = {4,2,7,3};
// array = arr; 共用同一快内存空间 没有产生新数组 所以要不要return ,用 的同一块地方 ,在原数组排序
int[] a = arrayUtils.sort(arr);
System.out.println(arr); // 内存地址的传递
System.out.println(a);
arrayUtils.print(arr);
arrayUtils.print(a);
// int s = arrayUtils.size(arr);
// System.out.println(s);
下面展示一些 定义一个学生类,里面有学号、姓名、年龄、性别四个私有的成员变量,为它们提供set和get方法,并定义一个方法,调用该方法可以打印所有的成员变量值;再定义一个方法,可以为所有的成员变量赋值。
。
package com.cll2;
public class Student {
private String name;
private int id;
private String sex;
private int age;
public void setName(String name) {
this.name = name;
}
public void setId(int id) {
this.id = id;
}
public void setAge(int age) {
this.age = age;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getName() {
return this.name;
}
public int getId() {
return this.id;
}
public String getSex() {
return this.sex;
}
public int getAge() {
return this.age;
}
//为所有的成员变量赋值
public void setAll(int id, int age, String name, String sex) {
this.id = id;
this.age = age;
this.name = name;
this.sex = sex;
}
//打印所有成员变量的值
public void print() {
System.out.println("id = " + this.id);
System.out.println("age = " + this.age);
System.out.println("name = " + this.name);
System.out.println("sex = " + this.sex);
}
//重写 toString 方法, 获取成员变量的值
public String toString() {
String id = "id = " + this.id;
String name = "name = " + this.name;
String sex = "sex = " + this.sex;
String age = "age = " + this.age;
String result = "{" + id + "," + name +"," + age +"," + sex + "}";
return result; //super.toString()+ 父类提供了内存地址
}
}
public class School {
public static void main(String[] args) {
Student stu = new Student();
stu.setAll(1801, 23, "成富贵", "男");
System.out.println(stu.toString());//当打印对象时,他会默认调用toString,对象肯定是引用数据类型,有就调用,没有就调用object
stu.print();
}
}