千锋逆战班day19(接口:哥德巴赫猜想,学生成绩排序)

在千锋“逆战”学习第19天
越努力越幸运
Day 19
验证歌德巴赫猜想
输入一个大于6的偶数,请输入出这个偶数能被分解为哪两个质数的和。
如 10=3+7 12=5+7
要求:两个人一组合作完成,一个人负责把一个整数n拆分成两个整数的和,另一个人负责写一个函数,判断某一个整数a是否为质数

package com.qf.day19.t0.test;
import java.util.*;
public class TestGoldBach {

	public static void main(String[] args) {
		// 验证歌德巴赫猜想
		Scanner input=new Scanner(System.in);
		System.out.print("请输入一个大于6的偶数:");
		int num=input.nextInt();
		
		//程序员A
		checkGoldBach(num,new EngineerAisPrime());	
	}
	
	//验证歌德巴赫猜想(工具)
	public static void checkGoldBach(int num,MathTool tool){
		//1、将大于6的整数进行拆分
		for(int i=2;i<=num/2;i++){
			if(tool.isPrime(i)&& tool.isPrime(num-i)){
				System.out.println(i+"\t"+(num-i));
			}
		}
	}
}

//约定:制定标准(隔离)
interface MathTool{
	public abstract boolean isPrime(int n);
}

//程序员A写个实现类
class EngineerAisPrime implements MathTool{
	public  boolean isPrime(int n){
		for(int i=2;i

11、接口的好处
程序的耦合性降低
更自然的使用多态
设计与实现完全分离
更容易搭建程序框架
更容易更换具体实现

第十一章 常用类与内部类
一、内部类
1、内部类
概念:在一个类的内部再定义一个完整的类
特点:
编译之后可生成独立的字节码文件
内部类可直接访问外部类的私有成员,而不破坏封装
可谓外部类提供必要的内部功能组件
2、成员内部类
在类的内部定义,与实例变量、实例方法同级别的类
外部类的一个实例部分,创建内部类对象时,必须依赖外部类对象
Outer out = new Outer();
Outer.Inner in=out.new Inner();
当外部类、内部类存在重名属性时,会优先访问内部类属性
成员内部类不能定义静态成员

package com.qf.day19.t1.instance;

public class TestInstanceInterClass {
	public static void main(String[] args) {
		Outer out=new Outer();
//		Outer.Inner in=new Outer.Inner();
		Outer.Inner in=out.new Inner();//特殊,不具普适性
		in.m2();
	}
}
//类级别、对象级别
class Outer{
	private int a=10;//外部实例变量
	//实例方法
	public void m1(){}
	
	//成员内部类(实例层级)
	class Inner{
		//static String field="hello";  //Error 不能定义静态成员 ,因为成员内部类,不能脱离外部类对象二独立存在
		int a=20;//内部实例变量
		public void m2(){
			System.out.println(Outer.this.a);//10
			System.out.println(this.a);//20
			System.out.println("Class Inner m2()");
		}
	}
}

接口案例1:自己定义接口的学生分数排序

package interfaces;

public class TestStudent {

	public static void main(String[] args) {
		Student[] stu=new Student[]{
			new Student("tom",120.0),
			new Student("marry",115.0),
			new Student("jack",130.0),
			new Student("edward",90.0)
		};
		Tool.sort(stu);
		for(int i=0;i{
	String name;
	double score;
	public Student(String name, double score) {
		super();
		this.name = name;
		this.score = score;
	}
	public int compareTo(Student stu) {
		//升序
		if(this.score>stu.score){
			return 1;
		}else if(this.score{
	int compareTo(S stus);
}
class Tool{
	public static void sort(Student[] stu){
		for(int i=0;i0){
					Student temp=stu[j];
					stu[j]=stu[j+1];
					stu[j+1]=temp;
				}
			}
		}
	}
}

简单版:

package interfaces;

public class TestStudentSimply {
	public static void main(String[] args) {
		SStudent[] stu=new SStudent[]{
				new SStudent("tom",120.0),
				new SStudent("marry",115.0),
				new SStudent("jack",130.0),
				new SStudent("edward",90.0)
		};
		java.util.Arrays.sort(stu);
		for(int i=0;i{
	String name;
	double score;
	public SStudent(String name, double score) {
		super();
		this.name = name;
		this.score = score;
	}
	public int compareTo(SStudent stus) {
		if(this.score>stus.score){
			return 1;
		}else if(this.score

注:如果包里有自己定义的接口,同包会优先使用自己定义的接口,而不是java定义好的接口

你可能感兴趣的:(笔记,java,接口)