抽象
抽象方法用abstract
抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
类中该有的成员(成员变量,方法,构造器),抽象类都可以有
抽象类最主要的特点式抽象类不能创建对象,仅作为一种特殊的父亲,让子类继承并且实现
A a = new A() //抽象类不能创建对象
一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义称为抽象类
成员内部类
外部类名.内部类名 对象名 = new 外部类().new 内部类();
点击查看代码
Outter.Inner in = new Outter().new Inner();
in.setName("张三");
System.out.println(in.getName());
in.show();
System.out.println("------------------------");
Body.Heart heart = new Body().new Heart();
heart.show();
//外部类
class Outter{
private int age;
public void run(){}
public static String schoolName;
public static void inAddr(){}
//成员内部类:无static修饰,属于外部类的对象的
public class Inner{
private String name;
public Inner() {
}
public Inner(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show(){
// 成员内部类中,是否可以直接访问外部类的实例成员? 可以
System.out.println(age);
run();
// 成员内部类中,是否可以直接访问外部类的静态成员? 可以
System.out.println(schoolName);
inAddr();
}
}
匿名内部类的写法
匿名内部类本质上是一个子类,同时也是一个子类对象
可以更方便的构建一个子类对象
Animal a = new Animal(){
@Override
public void cry() {
System.out.println("猫喵喵喵的叫~~~");
}
};
a.cry();
// 1、返回数组的内容给我们
int[] arr = {11, 22, 33, 44, 55, 98, 103, 27};
System.out.println(arr);
String rs = Arrays.toString(arr);
System.out.println(rs);
// 2、拷贝一个数组回来
// 参数一:原数组 参数二:起始索引 参数三:结束索引 (包前不包后)
int[] arr2 = Arrays.copyOfRange(arr, 3, 7);
System.out.println(Arrays.toString(arr2));
// 3、扩容数组:返回扩容后的新数组
int[] arr3 = Arrays.copyOf(arr, 20);
System.out.println(Arrays.toString(arr3));
// 4、修改数组中的每个数据的。
double[] scores = {59.5, 90, 60, 89, 29, 0, 100};
// 参数一:被修改的数组 参数二:用于修改的对象
Arrays.setAll(scores, new IntToDoubleFunction() {
@Override
public double applyAsDouble(int value) {
// value = 0 1 2 ...
// 修改数据返回
return scores[value] + 10;
}
});
// 目标:掌握Arrays类为对象数组进行排序的方案。
Student[] students = new Student[6];
students[0] = new Student("张无忌", '男', 28, 178.5);
students[1] = new Student("朱九真", '女', 25, 170.5);
students[2] = new Student("周芷若", '女', 23, 172.5);
students[3] = new Student("赵敏", '女', 27, 169.5);
students[4] = new Student("杨不悔", '女', 39, 165.8);
students[5] = new Student("玄冥二老", '男', 52, 165.3);
// 重点:Java中如何对自定义类型的对象进行排序呢?? 方式有两种。
// 第一种:可以让对象的类实现一个比较规则接口Comparable,
// 从写compareTo方法,制定大小比较规则。
// Arrays.sort(students);
// 第二种:sort方法存在一个重载的方法,可以在第二个参数自
// 带一个Comparator比较器对象,自己设置大小规则。
Arrays.sort(students, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
// 制定大小规则:
// 官方规定了:如果你认为左边对象大,返回正整数。
// 官方规定了:如果你认为左边对象小,返回负整数。
// 官方规定了:如果你认为两个对象一样大,返回0。
// 按照年龄
// if(o1.getAge() > o2.getAge()){
// return 1;
// }else if(o1.getAge() < o2.getAge()){
// return -1;
// }
// return 0;
// return o1.getAge() - o2.getAge(); // 升序
// return o2.getAge() - o1.getAge(); // 降序
// 按照身高排序。
// if(o1.getHeight() > o2.getHeight()){
// return 1;
// }else if(o1.getHeight() < o2.getHeight()) {
// return -1;
// }
// return 0;
// return Double.compare(o1.getHeight(), o2.getHeight()); // 升序
return Double.compare(o2.getHeight(), o1.getHeight()); // 降序
}
});
System.out.println(Arrays.toString(students));
}
/**
* this拿到当前学生对象。
* o拿到被比较的学生对象。
*/
@Override
public int compareTo(Student o) {
// 制定大小规则:
// 官方规定了:如果你认为左边对象大,返回正整数。
// 官方规定了:如果你认为左边对象小,返回负整数。
// 官方规定了:如果你认为两个对象一样大,返回0。
// 按照年龄
// if(this.getAge() > o.getAge()){
// return 1;
// }else if(this.getAge() < o.getAge()){
// return -1;
// }
// return 0;
return this.getAge() - o.getAge(); // 升序
}
System.out.println(Arrays.toString(scores));
// 5、排序数组。
Arrays.sort(scores); // 默认升序排序
System.out.println(Arrays.toString(scores));
}
标签:day08,return,Arrays,基础,getAge,new,println,Java,public
From: https://www.cnblogs.com/yifan0820/p/17822866.html