类和对象
类:是具有相同属性和方法的一组对象的集合的抽象化描述;
类是对象的抽象化描述,对象是类的实例化;
创建对象
People p=new People(); //类名 对象名=new 类名();
public void show() { //无参方法
for(int i=0;i<=4;i++) {
System.out.println(name+"\n"+"年龄:"+age+"\n"+"班级:"+classr+"\n"+"爱好:"+hobby);
}
}
public int add(int a,int b) { //有参方法
return a+b;
} 方法
有参方法
public class People{
//形参;代替将来会传入的参数;
public void a(int a,int b){ //有参方法必须传参
this.a=a; //this代表本类对象;
}
public static void main(String[] args){
People p=new People();
p.a(10,10); //传入的实参;
}
}
构造方法
//没有返回值类型;修饰符与类的修饰符一致,方法名与类的名一致;
public People(){ //每个类都默认有一个无参的构造方法;
} 方法的重载
public People(){
}
//在同一个类中,方法名相同,参数列表不同,这样的方法叫-->方法的重载;
public People(int a){ //对应不同的参数列表进行调用;
}
public People(byte b){
} 成员变量和局部变量
成员变量名与成员变量名不能相同,局部与局部变量名不同;成员变量名和局部变量名可以相同;
变量在哪个方法中声明就可以在哪个方法中使用;
封装
private修改元素的可见性;被private修饰的元素被隐藏;
使用private封装的属性只能在本类中使用;可以写一个公共方法(public),方便其他类调用
//在setter/getter方法中进行条件或流程的合法性判断
public void setAge(int age){ //set设置值方法
this.age=age;
}
public int getAge(){ //get获取值方法;参数
return this.age;
} 访问修饰符
修饰符 同一个类中 同一个包中 不同包的子类中 任何地方 private 可以 不可以 不可以 不可以 默认修饰符 可以 可以 不可以 不可以 protected 可以 可以 可以 不可以 public 可以 可以 可以 可以
protected在不同包的子类中使用必须有继承关系;
继承
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
1、子类不能继承父类中的构造方法;子类可以继承父类中没有封装的属性和方法,继承的public(修饰符)方法可以跨包,
2、任何一个类有且只有一个父类;
3、父类中所有未超出修饰范围的属性或方法都会被子类继承;
public Dog(){
//如果父类没有无参构造方法时,必须显式调用;
super()/super(参数);//调用父类构造器;只能存在于子类构造器的第一行代码;如果不写也会进行隐式调用;
}
public void setAge(int age){ //子类里的方法
super.age/super.setAge(); //super.方法名或属性名;调用父类中的属性或方法;
} 方法的重写
//父类方法
public void show(){
System.out.printin("父类show方法");
}
//子类方法
public void show(){
System.out.println("子类show方法");
} 1、子类中,方法名,返回值类型,参数列表均与父类保持一致;
2、修饰符不严于父类;
3、子类参数列表不同于父类是重写方法的重载
4、子类的重写方法覆盖父类方法
多态
//判断是否能创建对象,关键是构造器是否运行; //父类Animal,子类Cat //1、继承关系的多态(类型转换) Cat c=new Cat(); Animal a=c; //子类转换成父类对象可直接转 Animal a=new Cat(); Cat c=(Cat)a; //父类对象转换成子类对象需要强转
//2、方法的多态(方法重写) Animal a=new Cat(); a.show(); //父类对象调用的是子类重写的方法;show方法是子类重写的方法;重写的show方法覆盖了父类show方法 a.catshow(); //父类对象不能调用子类特有的方法
//3、同一类中的多态(方法的重载) Cat c=new Cat(); c.show(); c.show(10);
关键字
final关键字
1、被final修饰的变量叫常量;
2、常量被声明时必须赋值,常量的值不可更改;
3、变量名全部大写
4、被final修饰的类称为超类且不能被继承,
5、final修饰方法,则该方法不允许被重写;
static关键字
1、static修饰的属性名或方法名调用时不用创建对象,直接属性名或方法名直接调用
2、static可以修饰代码块,代码块称为静态代码块;如果有多个静态块,按顺序加载;每个静态代码块只会被执行一次
3、静态方法中不能直接调用非静态资源;调用时需要创建对象;本类中的非静态方法可以调用静态属性;
4、final 和static可同时修饰对象;
static int age;
String name;
//静态代码块在类被加载时运行,且只会在首次运行时运行一次;
static {
System.out.println("这是静态代码块");
}
//Cat c1=new Cat();会运行静态代码块
//Cat c2=new Cat();不会再次运行
抽象类与接口
1、抽象类中可以存在抽象方法和普通方法;但抽象方法必须存在于抽象类中;
2、抽象类不能new自己的构造器创建自己的实例化对象;
3、抽象类中的抽象方法在子类中必须重写(除非子类也是抽象类);
接口
1、接口中的方法全都是公共的抽象方法,不存在其他方法;
2、接口中的所有方法默认都是:public abstract;不能存在普通方法
3、接口中的变量都是公共的静态的常量(public static final);
4、接口没有构造方法;
5、实现的必须是接口,一次可以实现多个接口;但继承只能继承一个;
6、接口的方法需要类实现;
public class OneClass extends Father implements Oneinterface,Oneinterface2 {
//可实现多个接口,但只能继承一个类,可以继承的同时实现接口
} public interface Oneinterface {
int a=10;
String name="小明";
//功能定义
void show();
} public class OneClass implements Oneinterface{
//实现类,普通类中所有的抽象方法必须重写
@Override
public void show() {
System.out.println("重写的show方法");
}
}
toUpperCase()//大写
toLowerCase()//小写 异常
捕获异常
1、try{}catch{}finally{}中有return(return可以在try或catch中)会先立刻执行finally,在执行return;
2、终止虚拟机(system.exit(0);)时才会让finally不会被执行;
int i=10;
try {
return i; //return执行前会先执行finally但return的值(基本数据类型)始终不会变,如果是引用数据类型则会改变
}catch (Exception e) {
}finally {
i=20;
System.out.println("始终会被执行");
} //try不能单独出现,必须和catch或finally一起出现;
try {
System.out.println("输入数字"); //出现异常后后面的语句不会继续执行
int num1=sc.nextInt();
System.out.println("输入第二个数字");
int num2=sc.nextInt();
System.out.println(num1+num2);
}catch(InputMismatchException e) {
System.out.println("请正确输入数字");
}catch (Exception e) { //所有异常都可以转化成Exception异常
}finally { //finally中的语句不管异常是否被捕获都始终会被执行;
System.out.println("始终会被执行");
}
System.out.println("程序结束"); 抛出异常
1、throw是在方法体内抛出一个异常对象;
2、throws是在方法体前抛出任意多个异常类型;
3、类继承自Exception时throw抛出自定义异常时要先用throws抛出;
4、运行时异常(RuntimeException)可以通过throw抛出,非运行时异常必须通过throws抛出;
public void show() shrows InputMismatchException,NullPointerException,···{
}
public void show() {
thorw new InputMismatchException();
}
常见的异常类型
-
异常类型 说明 Exception 异常层次结构的父类 ArithmeticException 算术错误情形,如以零作除数 ArrayIndexOutOfBoundsException 数组下标越界 NullPointerException 尝试访问 null 对象成员 ClassNotFoundException 不能加载所需的类 IllegalArgumentException 方法接收到非法参数 ClassCastException 对象强制类型转换出错 NumberFormatException 数字格式转换异常,如把 "abc" 转换成数字

京公网安备 11010502036488号