面向对象:
类与对象的关系:类是对象的抽象,对象是类的实现
类是由属性和方法构成,它的每一个对象都有对应的属性和方法
方法:
方法的重载:
目的:针对同一个行为的多种表现,对应相同方法名的多个方法
原则:方法名相同,参数列不同
类方法(static方法)
类名.方法()
三大特性:封装、继承、多态
封装:保护属性值不被随意修改
私有化属性,并提供getter、setter对外接口
继承:代码重用、多态的基础
extends关键字
默认的根类是Object,单根继承
方法的重写:
前提:有继承关系、方法名相同、参数列表相同、返回值相同或者小于父类、访问修饰符不能小于父类、异常不能多于(严于)父类
构造方法:
默认的构造方法都会先走父类的无参构造方法
用super指定的构造方法,调用指定构造方法前,参照第一条
多态:
以父类作参数类型的
父类中的方法如果被子类重写,那么在使用父类调用该方法是,
则看具体的子类类型,决定调用的是哪个重写后的方法
以父类作返回值类型的
如果只调用父类方法,则没问题
如果需要调用子类特有的方法,则需要向下强制转型
抽象类和接口:
abstract关键字:定义抽象类和抽象方法
interface关键字:定义接口
implements关键字:实现接口
抽象类和接口的异同点:
相同点:都不能被实例化,都可以有抽象方法
不同点:
1、接口的所有方法都默认是:public abstract类型
2、接口的所有属性都默认是:public static final类型
3、抽象类用来被继承,主要的目的是代码重用,只能继承一个类
4、接口用来扩展功能,可以实现多个接口
异常
异常:
异常的分类:Throwable-->Error、Exception
Exception-->checked异常、运行期异常(RuntimeException)
异常的处理:
try{
有可能产生异常的代码
}catch(有可能的异常类型 e){
打印堆栈/打印异常信息.....
}finally{
最终块,往往用于关闭资源
}
异常的定义:
自定义异常类,继承已知的异常类
写出有参构造,并用super调用父类的有参构造
计算输入的数字的和及平均值
public class 计算输入的数字的和及平均值 {//介绍了Scanner建的对象调用hasNextDouble和nextDouble的方法
public static void main(String args[]){
System.out.println("请输入您想输入的数字:");
Scanner reader=new Scanner(http://System.in);
int i=0;
double sum=0;
while(reader.hasNextDouble()){
double m=reader.nextDouble();
sum=sum+m;
i++;
}
double h=sum/i;
System.out.printf("您输入的数字总和是:%f\n",sum);
System.out.printf("您输入的这些数字平均数是:%f",h);
}
}
计算平均成绩
计算平均成绩
import java.util.*;
public class Text {
public static void main(String args[]){
System.out.println("请输入评委的个数:");
Scanner shu=new Scanner(http://System.in);
int a=shu.nextInt();//这样使得你在文本框中输入的数显现出来
System.out.println("请输入各个评委的分数:");
double b[]=new double[a];//记住这种把变量设为数组length的方法
for(int i=0;i<b.length;i++){
b[i]=shu.nextInt();
}
java.util.Arrays.sort(b);//此种方法可将数组中的数字按小大排列好
System.out.println("去掉一个最高分:"+b[b.length-1]);
System.out.println("去掉一个最低分:"+b[0]);
double sum=0;
for(int i=1;i<b.length-2;i++){
sum=sum+b[i];
}
double ave=sum/a;
System.out.println("此选手的最终成绩为:"+ave);
}
}